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`\\`转义了特殊字符的功能性。我没有