📜  珀尔 |正则表达式中的量词

📅  最后修改于: 2022-05-13 01:55:22.376000             🧑  作者: Mango

珀尔 |正则表达式中的量词

Perl 提供了几个正则表达式量词,用于指定在匹配完成之前给定字符可以重复多少次。这主要在要匹配的字符数未知时使用。

Perl 量词有六种类型,如下所示:

  • * = 这表示该组件必须出现零次或多次。
  • + = 这表示该组件必须出现一次或多次。
  • ? = 这表示该组件必须存在零次或一次。
  • {n} = 这表示该组件必须存在 n 次。
  • {n, } = 这表示组件必须至少出现 n 次。
  • {n, m} = 这表示组件必须至少出现 n 次且不超过 m 次。

量词表:
上面的所有类型都可以用这个表来理解,该表具有包含量词的正则表达式及其示例。

RegexExamples
/Ax*A/AA, AxA, AxxA, AxxxA, …..
/Ax+A/AxA, AxxA, AxxxA, …..
/Ax?A/AA, AxA
/Ax{1, 3}A/AxA, AxxA, AxxxA
/Ax{2, }A/AxxA, AxxxA, …..
/Ax{4}A/AxxxxA

让我们看一些说明这些量词的示例:
示例 1:在此示例中, *量词用于正则表达式/Ge*ks/ ,它产生“Gks”、“Geks”、“Geeks”……等等,并与输入字符串“Gks”匹配因此它给出“找到匹配”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Gks";  
       
# matching the above string with "*"
# quantifier in regular expression /Ge*ks/
if ($a =~ m/Ge*ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
}  

输出:

Match Found

示例 2:在此示例中, +量词用于正则表达式/Ge+ks/ ,它产生“Geks”、“Geeks”、“Geeeks”……等等,并与输入字符串“Gks”匹配因此它给出“未找到匹配”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Gks";  
       
# matching the above string with "+"
# quantifier in regular expression /Ge+ks/
if ($a =~ m/Ge+ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
}  

输出:

Match Not Found

示例 3:在此示例中, 量词在正则表达式/Ge?ks/中使用,它产生“Geks”或“Gks”并与输入字符串“Geeks”匹配,因此它给出“Match Not Found”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Geeks";  
       
# matching the above string with "?"
# quantifier in regular expression /Ge?ks/
if ($a =~ m/Ge?ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
} 

输出:

Match Not Found

示例 4:在此示例中, {n}量词用于正则表达式/Ge{2}ks/ ,它产生“Geeks”并与输入字符串“Geeks”匹配,因此它给出“Match Found”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Geeks";  
       
# matching the above string with {n}
# quantifier in regular expression /Ge{2}ks/
if ($a =~ m/Ge{2}ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
} 

输出:

Match Found

示例 5:在此示例中, {n, }量词用于正则表达式/Ge{2, }ks/ ,它产生“Geeks”、“Geeks”、“Geeeeks”等并与输入字符串匹配“Geks”,因此它给出“Match Not Found”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Geks";  
       
# matching the above string with {n, }
# quantifier in regular expression /Ge{2, }ks/
if ($a =~ m/Ge{2, }ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
}  

输出:

Match Not Found

示例 6:在此示例中, {n, m}量词用于正则表达式/Ge{1, 2}ks/ ,它产生“Geks”和“Geeks”,并与输入字符串“Geeeks”和因此它给出“未找到匹配”作为输出。

#!/usr/bin/perl 
     
# Initializing a string 
$a = "Geeeks";  
       
# matching the above string with {n, m}
# quantifier in regular expression /Ge{1, 2}ks/
if ($a =~ m/Ge{1, 2}ks/)   
{  
    print "Match Found\n";  
}  
else
{  
    print "Match Not Found\n";  
} 

输出:

Match Not Found