珀尔 |正则表达式中的量词
Perl 提供了几个正则表达式量词,用于指定在匹配完成之前给定字符可以重复多少次。这主要在要匹配的字符数未知时使用。
Perl 量词有六种类型,如下所示:
- * = 这表示该组件必须出现零次或多次。
- + = 这表示该组件必须出现一次或多次。
- ? = 这表示该组件必须存在零次或一次。
- {n} = 这表示该组件必须存在 n 次。
- {n, } = 这表示组件必须至少出现 n 次。
- {n, m} = 这表示组件必须至少出现 n 次且不超过 m 次。
量词表:
上面的所有类型都可以用这个表来理解,该表具有包含量词的正则表达式及其示例。
Regex | Examples |
---|---|
/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