regex - sed 无法理解正确的 (?) 正则表达式

标签 regex sed

根据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/

相关文章:

java - 如何使用扫描仪分解字符串

Python 正则表达式 - 了解匹配和搜索之间的区别

arrays - 使用 awk 解析文本文件的各个部分

regex - sed 搜索并替换 html 标签

regex - sed 只替换最后一次匹配 - 需要匹配所有

javascript 替代 sed 脚本

JavaScript:一个字母和一个点的正则表达式

c# - REGEX 不连续匹配字符串

javascript - 了解 JS .match() 的工作原理

linux - 在程序输出中选择特定值 (Bash)