sed regex全局查找和删除字符串

时间:2015-02-26 15:05:28

标签: regex sed

我有以下(工作)正则表达式:

UNUSED([^,}]+)\}|,\s?UNUSED([^{]+)|UNUSED([^{]+),\s?|UNUSED([^{]+)

我运行命令

sed 's/UNUSED([^,}]+)\}|,\s?UNUSED([^{]+)|UNUSED([^{]+),\s?|UNUSED([^{]+)//g' < index.css > newfile

但新文件仍然具有应该删除的所有模式。我做错了什么?

index.css incl。正则表达式:

http://regexr.com/3agmm

1 个答案:

答案 0 :(得分:5)

您正在使用扩展的POSIX正则表达式。您需要将-r传递给sed,告诉它使用扩展的POSIX正则表达式。

另请注意,您正在使用的捕获组可以省略:

s/UNUSED[^,}]+}|,\s?UNUSED[^{]+|UNUSED[^{]+,\s?|UNUSED[^{]+//g

当然你也可以使用基本的POSIX正则表达式,然后没有-n选项:

s/UNUSED[^,}]\+}\|,\s?UNUSED[^{]\+\|UNUSED[^{]\+,\s?\|UNUSED[^{]\+//g