根据https://regex101.com/r/NLSymf/3 ,以下正则表达式:
\[\[(foo)([^\]]+)\]\]
(full) 匹配字符串 [[foo>test1|test2]]
,但是 sed
似乎无法理解这一点,因为:
echo "[[foo>test1|test2]]" | sed -E -e '/\[\[(foo)([^\]]+)\]\]/d'
(应返回空字符串)返回:
[[foo>test1|test2]]
从 sed
的角度来看,匹配 [[foo>test1|test2]]
的正则表达式是什么?
最佳答案
反斜杠字符在方括号表达式中失去转义能力。 RE 中的杂散右括号不需要转义,这就是 grep 不会在下面的第一个管道中失败的原因。请参阅RE Bracket Expression供引用。
$ echo 'a]' | grep -Eo '[^\]]'
a]
$ echo 'a]' | grep -Eo '[^]]'
a
正确正则表达式是:
\[\[(foo)([^]]+)]]
关于regex - sed 无法理解正确的 (?) 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65178307/