sed RegEx 匹配完整/部分字符串

sed RegEx 匹配完整/部分字符串

我在为 创建 RegEx 字符串时遇到了一些问题sed
我使用各种在线服务测试了该表达式,并且确实成功了。
但不幸的是,对于 却不是这样sed

这是我的测试sed表达式:

echo "Windows" | sed -e 's/[Ww][Ii][Nn]([Dd][Oo][Ww][Ss])?/MATCH/g;'

而且它应该匹配“Win”或“Windows”(当然还有“WIN”和“windOwS”等等)。但是它却不匹配!(至少与 不匹配sed)。问题是,我无法使字符串的第二部分成为可选的。在线 RegEx 测试器按预期工作,但我需要它在命令行上工作。

我知道有很多种 RegEx 风格;所以可能我没有匹配到正确的风格。
有人能帮我吗?

答案1

您的表达式将作为扩展的正则表达式工作。使用sed -E

echo "Windows Window" | sed -Ee 's/[Ww][Ii][Nn]([Dd][Oo][Ww][Ss])?/MATCH/g'

使用 GNU,如果我转义,和,sed我就可以获得相同的效果-E(即当sed使用基本正则表达式时):()?

echo "Windows Window" | sed -e 's/[Ww][Ii][Nn]\([Dd][Oo][Ww][Ss]\)\?/MATCH/g'

相关内容