正则表达式匹配,但sed无法替换

约翰·史密斯

我遇到了一个棘手的正则表达式问题

我有下面的字符串

some_Name   _  _Bday Date Comm.txt

这是我的正则表达式,以匹配空格和下划线

\_?\s\_?

Now when i try to replace the string using sed and the above regex

echo "some_Name   _  _Bday Date Comm.txt" | sed 's/\_?\s\_?/\_/g'

我想要的输出是

some_Name_Bday_Date_Comm.txt

我对此有任何想法吗?

维克多·史翠比维

您正在使用POSIX BRE正则表达式引擎,其\_?\s\_?模式与_?,空格(如果sed支持\s速记)和_?子字符串(即,?被视为文字问号符号匹配

您可以使用

sed -E 's/[[:space:]_]+/_/g'
sed 's/[[:space:]_]\{1,\}/_/g'

观看在线sed演示

[[:space:]_]+POSIX ERE模式(启用-E选项)将匹配一个或多个空格或下划线。

POSIX ERE+量词可以像\{1,\}POSIX BRE中那样编写另外,如果使用GNU sed,则可以\+在第二个sed命令中使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章