Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 正则表达式:将$in[]放入零宽度正向前瞻断言中_Regex_Perl - Fatal编程技术网

Regex 正则表达式:将$in[]放入零宽度正向前瞻断言中

Regex 正则表达式:将$in[]放入零宽度正向前瞻断言中,regex,perl,Regex,Perl,以下脚本用于在行尾修剪t echo "test"|perl -pe "s/t(?=$)//g" tes #sucess echo "test"|perl -pe "s/t(?=[\\$])//g" test #fail 为什么第二个失败了?结果不应该也是“tes”吗?在第一种情况下,$是字符串的结尾。在第二种情况下,它是$自身签名。在第一种情况下,$是字符串的结尾。在第二种情况下,它是$自身签名。在第一种情况下,$是字符串的结尾。在第二种情况下,它是$自身签名。在第一种情况下,$是字符串的

以下脚本用于在行尾修剪
t

echo "test"|perl -pe "s/t(?=$)//g"
tes  #sucess

echo "test"|perl -pe "s/t(?=[\\$])//g"
test #fail

为什么第二个失败了?结果不应该也是“tes”吗?

在第一种情况下,
$
是字符串的结尾。在第二种情况下,它是
$
自身签名。

在第一种情况下,
$
是字符串的结尾。在第二种情况下,它是
$
自身签名。

在第一种情况下,
$
是字符串的结尾。在第二种情况下,它是
$
自身签名。

在第一种情况下,
$
是字符串的结尾。在第二种情况下,它是
$
自身签名。

它不起作用,因为在第一个脚本中
$
是一个行尾锚,但在第二个脚本中,由于它包含在字符类中,
$
被视为文字字符


请注意,在第一个脚本中,前瞻的使用是无用的,因为
$
本身是一个零宽度断言,因此
t$
将完全匹配相同的子字符串。

它不起作用,因为在第一个脚本中
$
是一个行尾锚点,但在第二个脚本中,因为它包含在字符类中,
$
被视为文字字符


请注意,在第一个脚本中,前瞻的使用是无用的,因为
$
本身是一个零宽度断言,因此
t$
将完全匹配相同的子字符串。

它不起作用,因为在第一个脚本中
$
是一个行尾锚点,但在第二个脚本中,因为它包含在字符类中,
$
被视为文字字符


请注意,在第一个脚本中,前瞻的使用是无用的,因为
$
本身是一个零宽度断言,因此
t$
将完全匹配相同的子字符串。

它不起作用,因为在第一个脚本中
$
是一个行尾锚点,但在第二个脚本中,因为它包含在字符类中,
$
被视为文字字符



请注意,在第一个脚本中,前瞻的使用是无用的,因为
$
本身是零宽度断言,因此
t$
将完全匹配相同的子字符串。

您不需要零宽度前瞻断言,也不需要
g
标志
s/t$//
就足够了。替换为
s/t(?=[\\$])//g的第二个单行程序无法运行,它以致命错误
Unmatched结束[在正则表达式中,由标记的不需要zerowidth lookahead断言或
g
标志。
s/t$//
就足够了。带有替换
s/t(?=[\\$])//g的第二个单行程序无法运行,它以致命错误
Unmatched结束[在正则表达式中,由标记的不需要zerowidth lookahead断言或
g
标志。
s/t$//
就足够了。带有替换
s/t(?=[\\$])//g的第二个单行程序无法运行,它以致命错误
Unmatched结束[在正则表达式中,由标记的不需要zerowidth lookahead断言或
g
标志。
s/t$//
就足够了。带有替换
s/t(?=[\\$])//g的第二个单行程序无法运行,它以致命错误
Unmatched结束[在正则表达式中,由Why
$
标记,在下面的例子中是行尾:
echo“tests”\perl-pe“s/s[t\\$]//g”
,但在问题的例子中,它只是
$
符号?@MarkZar`\\`转义特殊字符functionality。我没有得到它。我在这两种情况下都使用了\\和[]。@MarkZar在这个例子中是
echo“test”| perl-pe“s/t(?=$)//g”
这是行的末尾,因为
$
没有转义。在这种情况下:
echo“test”| perl-pe“s/t(?=[\\$)//g”
这是
$
,因为它被转义了。啊,谢谢。我明白了。所以我猜在perl
$
中永远不能用在
[]
表示一行的结尾,对吗?因为
“[$]”
“[\$]”
不起作用,而
“[\\$]”
只表示
$
本身的签名。为什么
$
在以下情况下是行的结尾:
echo“tests”\124; perl-pe“s/s[t\\\\$//g“
,但在这个问题中,它只是
$
符号?@MarkZar`\\`转义特殊字符的函数性。我没有得到它。我在这两种情况下都使用了\\和[]。@MarkZar在本例中是
echo“test”| perl-pe“s/t(?=$)//g”
它是行的结尾,因为
$
没有转义。在这种情况下:
echo“test”|perl-pe“s/t(?=[\\$])//g“
它是
$
,因为它是转义的。啊,谢谢。我明白了。所以我想在perl中,
$
永远不能在
[]
中用来表示行尾,对吗?因为
“[$]”或者
“[\$]”或者
“[\$]”不起作用,而
“[\$]”
仅表示
$
符号本身。为什么
$
在下面的例子中是行的结尾:
echo“tests”\124; perl-pe“s/s[t\\\\$]//g”
,但在问题的情况下,它只是
$
符号?@MarkZar`\\\`转义特殊字符的功能性。我没有得到它。我使用\\和[]在这两种情况下,@MarkZar在本例中是
echo“test”| perl-pe“s/t(?=$)//g”
这是行的结尾,因为
$
没有转义。在本例中:
echo“test”| perl-pe“s/t(?=\\$)//g”
它是
$
,因为它是转义的。啊,谢谢。我明白了。所以我想在perl中,
$
永远不能在
[]
中用来表示行的结束,对吧?因为
“[$]”或者
“[\$]”或者
“[\$]”不起作用,而
“[\\$]”
只表示
$
符号本身。为什么
$
在下面的例子中是这行的结尾:
echo“tests”\124; perl-pe“s/s[t\\\\$]//g”
,但在这个问题中,它只是
$
符号?@MarkZar`\\`转义了特殊字符的功能性。我没有