s / \ G / 0 / g是什么意思?

阿格纳罗克

我在Perl中使用正则表达式。我遇到的一件事:

my $n = "   49 here";
$n =~ s/\G /0/g;
print $n;

这给出:

00049 here

我知道s修饰符(单行)。我也了解g修饰符(全局变量,它跟踪最后一个匹配位置)。我知道regex用零代替某些东西,但我不明白\G它后面AND空格是什么(\G结果后面没有空格0 49 here)。

用户名

\G被称为G-锚构造。这意味着它必须与上次成功匹配结束的位置匹配。在任何正则表达式开始之前,\G(实际上是一个标志)为true,因此它将以true开头,然后寻找一个空格,找到它,仍然为true,然后找到下一个,依此类推。等到没有找到空格时,\Gflag变为false并保持这种方式(在这种情况下)。

如果没有它,它将在字符串的任何地方而不是在开头寻找空间。

$ perl -E'my $n = "   49 here"; $n =~ s/\G /0/g; say $n'
00049 here

$ perl -E'my $n = "   49 here"; $n =~ s/ /0/g; say $n'
000490here

/\G/g仅在Perl的开头仅匹配1次,因为Perl不会两次返回完全相同的匹配(定义为具有相同的起始位置和长度)。这就是为什么它在0此处添加一个并在以下位置停止的原因

$ perl -E'my $n = "   49 here"; $n =~ s/\G/0/g; say $n'
0   49 here

在Perl中,最后一个匹配结束的位置与要匹配的变量(不是运算符)相关联。可以使用该pos功能进行观察和更改\G标志保留在变量中,而不是正则表达式中。由于它与要匹配的变量相关联,因此在另一个正则表达式的后续应用程序中,\G将从保留的最后一个匹配项开始。

$ perl -E'my $n = "abcdefabc"; $n =~ /def/g; $n =~ s/\Gabc/ABC/; say $n'
abcdefABC

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

s [-1] = 0是什么意思?

来自分类Dev

sed's / 5 // g'在此命令行中是什么意思?

来自分类Dev

#字符在/ bin / sed -e's#abc#zzz#g'中是什么意思?

来自分类Dev

字符串匹配“ s / \ r \ n / / g”在perl中是什么意思

来自分类Dev

npm install -g是什么意思

来自分类Dev

npm install -g是什么意思

来自分类Dev

charm ^ G在vim中是什么意思?

来自分类Dev

MySQL Workbench中的列标志“ G”是什么意思

来自分类Dev

replace(/ \ n / g,“ something”)是什么意思?

来自分类Dev

在PCRE regex末尾,我和g是什么意思?

来自分类Dev

:g在此sed动作中是什么意思?

来自分类Dev

在排序命令中“ -g”选项是什么意思?

来自分类Dev

replace('\0','0') 是什么意思?

来自分类Dev

-d 0/0 是什么意思?

来自分类Dev

(〜0L)是什么意思?

来自分类Dev

(char *)0是什么意思?

来自分类Dev

JavaScript:“ void 0”是什么意思?

来自分类Dev

yytext [0]是什么意思?

来自分类Dev

(0,somefunc] [args)是什么意思

来自分类Dev

“ this.this $ 0”是什么意思?

来自分类Dev

Binding =“ {绑定(0)}”是什么意思?

来自分类Dev

“?1:0”是什么意思

来自分类Dev

assert(0)是什么意思?

来自分类Dev

$ {_ [0]}在bash中是什么意思?

来自分类Dev

((Struct *)0)是什么意思?

来自分类Dev

sed中的\ 0是什么意思?

来自分类Dev

$ {_ [0]}在bash中是什么意思?

来自分类Dev

Binding =“ {绑定(0)}”是什么意思?

来自分类Dev

在PCRE正则表达式末尾,我和g是什么意思?