不以 exp 结尾的否定回溯表达式:'w+(?<!exp)b' 或 'w+b(?<!exp)'



对于表达式(?<!foo),否定外观,断言紧挨着字符串中当前位置之前的内容不是foo。
现在匹配不以字符结尾的字符串abc.
形式表达式是w+(?<!abc)bbw+(?<!abc)b

echo "xxabc jkl" | grep -oP  'w+(?<!abc)b'
jkl

让我们尝试另一种形式:w+b(?<!abc)

echo "xxabc jkl" | grep -oP  'w+b(?<!abc)'
jkl

它也得到正确答案。
在我看来,w+b(?<!abc)不是负面的背后,没有(?<!abc)的背后,它不能称为负面的背后。
1.Is 表情w+b(?<!abc)消极的回望?
2.为什么w+b(?<!abc)w+(?<!abc)b有相同的效率?

1(这是一个负面的回溯窗口。如果要匹配未由其他内容进行的内容,则使用负面回溯。?<!abc是一个负面的回望窗口。因此,仅当正在进行的标记不是"abc"时才为真,而提供的字符串也是如此:"xxabc jkl"技术上,空格正在进行"jkl"因此它匹配。

2(b寻找单词边界。单词边界适用于两个正则表达式中存在的空格和字符串结尾。如果您真的想看到差异,请尝试从输入中取出空间。所以 使用"xxabcjkl"

相关内容

最新更新