Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl正则表达式-gc修饰符是什么意思?_Regex_Perl_Modifier - Fatal编程技术网

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

Regex Perl正则表达式-gc修饰符是什么意思?,regex,perl,modifier,Regex,Perl,Modifier,我有一个正则表达式,它与以下文本匹配: $text =~ m/$regex/gcxs 现在我想知道,'gc'修饰语是什么意思: 我已搜索并发现,gc表示“允许在失败的/g匹配后继续搜索” 这我不清楚。继续搜索意味着什么 据我所知,这意味着如果/g搜索失败,将从一开始就开始匹配。但是/g修改器是否与整个字符串匹配?使用/g修改器来记住“字符串中的位置”,这样您就可以增量处理字符串。e、 g my $txt = "abc3de"; while( $txt =~ /\G[a-z]/g ) {

我有一个正则表达式,它与以下文本匹配:

$text =~ m/$regex/gcxs
现在我想知道,'gc'修饰语是什么意思:

我已搜索并发现,gc表示“允许在失败的/g匹配后继续搜索”

这我不清楚。继续搜索意味着什么


据我所知,这意味着如果/g搜索失败,将从一开始就开始匹配。但是/g修改器是否与整个字符串匹配?

使用
/g
修改器来记住“字符串中的位置”,这样您就可以增量处理字符串。e、 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
示例代码:

在perldoc perlre中

全局匹配,匹配失败后保留当前位置。与i、m、s和x不同,这两个标志影响正则表达式的使用方式,而不是正则表达式本身。有关g和c修饰符的进一步解释,请参见perlretut中的Perl中使用正则表达式

指定的ref导致:

此URI有一个标题为“全局匹配”的小节,其中包含一个小型教程/工作示例,包括:

匹配失败或更改目标字符串将重置位置。如果不希望在匹配失败后重置位置,请添加//c,如/regexp/gc中所示。字符串中的当前位置与字符串关联,而不是与regexp关联。这意味着不同的字符串具有不同的位置,可以单独设置或读取它们各自的位置


Lee

此答案已添加到“修饰符”下的。