Regex [0-9]*和[0-9]&x2B之间的差异;在sed中
据我所知,*匹配零个或多个,+匹配一个或多个。 所以当我在macOS上这样做时:Regex [0-9]*和[0-9]&x2B之间的差异;在sed中,regex,sed,Regex,Sed,据我所知,*匹配零个或多个,+匹配一个或多个。 所以当我在macOS上这样做时: echo "1" | sed 's/[0-9]*//g' 号码被删除了 但如果我这样做: echo "1" | sed 's/[0-9]+//g' 号码仍然会在那里 但是[0-9]+不应该也匹配“1”吗?+在sed中被认为是扩展正则表达式的一部分,因此默认情况下,+不会被识别为特殊字符。使用-E标志启用扩展正则表达式,如下所示: echo "1" | sed -E 's/[0-9]+//g' 这(可能)
echo "1" | sed 's/[0-9]*//g'
号码被删除了
但如果我这样做:
echo "1" | sed 's/[0-9]+//g'
号码仍然会在那里
但是[0-9]+不应该也匹配“1”吗?
+
在sed中被认为是扩展正则表达式的一部分,因此默认情况下,+
不会被识别为特殊字符。使用-E
标志启用扩展正则表达式,如下所示:
echo "1" | sed -E 's/[0-9]+//g'
这(可能)与sed
命令是否在POSIX(严格)模式下运行有关,或者是否启用了GNU扩展
在POSIX模式下,sed
regex中的+
不是元字符
在GNU扩展模式中,+
表示“一次或多次重复”。使用-E
选项启用GNU扩展
有关sed正则表达式的更多信息: