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

时间:2014-10-16 08:51:28

标签: regex perl

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

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

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

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

2 个答案:

答案 0 :(得分:2)

它不起作用,因为在第一个脚本中$锚点,但在第二个脚本中,因为它包含在一个字符类中, $被视为字面意思。

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

答案 1 :(得分:1)

在第一种情况下,$是字符串的结尾。在第二种情况下,它是$自我标志。