正则表达式 – Perl正则表达式 – gc修饰符是什么意思?

我有一个正则表达式匹配一些文本:

$text =~ m/$regex/gcxs

现在我想知道’gc’修饰符是什么意思:

我搜索并发现gc意味着“允许继续搜索失败/ g匹配后”。

对我来说这不清楚继续搜索意味着什么?

据我所知,这意味着如果/ g搜索失败,则开始匹配。但是/ g修饰符是否匹配整个字符串?

/ g修饰符用于记住“字符串中的位置”,以便您可以逐步处理字符串。例如

my $txt = "abc3de";
while( $txt =~ /\G[a-z]/g )
{
    print "$&";
}
while( $txt =~ /\G./g )
{
    print "$&";
}

因为位置在失败的匹配上重置,所以将输出

abcabc3de

/ c标志不会重置失败的匹配位置。所以如果我们添加/ c到第一个正则表达式这样

my $txt = "abc3de";
while( $txt =~ /\G[a-z]/gc )
{
    print "$&";
}
while( $txt =~ /\G./g )
{
    print "$&";
}

我们结束了

abc3de

示例代码:http://ideone.com/cC9wb

翻译自:https://stackoverflow.com/questions/11395395/perl-regular-expression-what-does-gc-modifier-means

转载注明原文:正则表达式 – Perl正则表达式 – gc修饰符是什么意思?