【发布时间】:2014-08-11 15:24:29
【问题描述】:
需要用正则表达式替换文件中的字符串。
我的正则表达式是api.(dev[0-9]+\.)?side.com,我正在使用它来调用:
sed "s/api.(dev[0-9]+\.)?side.com/$SERVER_HOST_VALUE/g"
但它没有找到像“api.side.com”或“api.dev02.side.com”这样的字符串。正则表达式对我有用,而不仅仅适用于“sed”命令。
那么如何在sed 中正确使用当前的正则表达式?
【问题讨论】:
-
使用
sed -r,用于正则表达式扩展。否则,逃避一切:sed "s/api.\(dev[0-9]\+\.\)\?side.com/$SERVER_HOST_VALUE/g" file -
你说的我的正则表达式是
api.(dev[0-9]+\.)?parkme.com是什么意思? -
如果正则表达式是
api.(dev[0-9]+\.)?parkme.com,你为什么在命令中使用api.(dev[0-9]+\.)?side.com?parkme!=side. -
@Barmar 对不起,我的错。已编辑
-
请注意,正则表达式的方言很多,
sed默认的正则表达式比其他大多数方言都简单。您需要了解您选择的工具支持的正则表达式,或者如何使您选择的工具使用您想要的正则表达式方言(如果这是一个选项)。