我正在尝试从grep搜索中删除一个字符串,尽管regex似乎是正确的,但我似乎无法工作。我也在使用OSX,但我安装gnu-sed是为了让事情变得更简单。
我希望下面的正则表达式可以从以下代码中删除所有的最小确定性:
gsed -r 's/minCertainty=\"\d\.\d{1,}\"//g'以下是我正在处理的文本的一个示例,用于上下文:
<vendor="company1" minCertainty="1.0"/>
<vendor="company2" minCertainty="0.75"/>
<vendor="company3" minCertainty="0.25"/>发布于 2017-09-06 01:16:10
用于数字的\d是对standard regex syntax的perl扩展(无论是基本版本还是扩展版本)。gsed -r使用扩展正则表达式语法,并且不包括perl扩展。因此,请使用[0-9]或[[:digit:]]。此外,您不需要转义表达式中的单引号(这似乎没有什么坏处,但我建议您不要这么做)。因此,请使用以下方法之一:
gsed -r 's/minCertainty="[0-9]\.[0-9]{1,}"//g'
gsed -r 's/minCertainty="[[:digit:]]\.[[:digit:]]{1,}"//g'发布于 2017-09-06 01:12:23
在我的机器上,gsed似乎不支持\d来检测数字-至少,当我尝试它时,它不能在这里工作。下面的正则表达式可以工作:
gsed -r 's/minCertainty=\"[0-9]\.[0-9]{1,}\"//g'
https://stackoverflow.com/questions/46059783
复制相似问题