Ano*_*eek 21 regex perl modifier
我有一个正则表达式匹配一些文本:
$text =~ m/$regex/gcxs
Run Code Online (Sandbox Code Playgroud)
现在我想知道'gc'修饰符的含义:
我搜索并发现gc的意思是"允许在失败/ g匹配后继续搜索".
这对我来说并不清楚.继续搜索意味着什么?
据我所知,这意味着如果/ g搜索失败,则在开始时开始匹配.但是/ g modififier不匹配整个字符串吗?
Sod*_*ved 33
该/g
改性剂是用来记住了"在一个字符串的位置",因此您可以逐步处理字符串.例如
my $txt = "abc3de";
while( $txt =~ /\G[a-z]/g )
{
print "$&";
}
while( $txt =~ /\G./g )
{
print "$&";
}
Run Code Online (Sandbox Code Playgroud)
因为在失败的匹配时重置位置,所以将输出上述内容
abcabc3de
Run Code Online (Sandbox Code Playgroud)
该/c
标志不会重置失败匹配的位置.所以,如果我们/c
像这样添加到第一个正则表达式
my $txt = "abc3de";
while( $txt =~ /\G[a-z]/gc )
{
print "$&";
}
while( $txt =~ /\G./g )
{
print "$&";
}
Run Code Online (Sandbox Code Playgroud)
我们结束了
abc3de
Run Code Online (Sandbox Code Playgroud)
示例代码:http://ideone.com/cC9wb
在perldoc perlre中,gc
讨论了修饰符:
全局匹配,匹配失败后保留当前位置。与 i、m、s 和 x 不同,这两个标志影响正则表达式的使用方式而不是正则表达式本身。有关 g 和 c 修饰符的进一步说明,请参阅 perlretut 中的在 Perl 中使用正则表达式。
指定的参考链接到一个页面,其中有一个名为“全局匹配”的小节,其中包含一个小教程/工作示例,包括:
匹配失败或更改目标字符串会重置位置。如果您不希望在匹配失败后重置位置,请添加 //c ,如 /regexp/gc 中。字符串中的当前位置与字符串相关联,而不是与正则表达式相关联。这意味着不同的字符串具有不同的位置,并且它们各自的位置可以独立设置或读取。
归档时间: |
|
查看次数: |
4770 次 |
最近记录: |