使用egrep匹配REGEXP中的美元金额

时间:2017-09-05 00:58:40

标签: regex unix

只是想知道为什么这个表达式egrep "\$[0-9]+(\.[0-9][0-9])?" dollar.txt与$ 4.50,$ 5.00,$ 1000不匹配。就此而言,它并不匹配任何类似的东西。

此外,表达式egrep "\$" dollar.txt匹配

$1000 over here 

no money here

有人可以解释原因。 (这个问题的两个部分)......谢谢

Output image

1 个答案:

答案 0 :(得分:0)

在我的机器上尝试它,看起来,即使前面有反斜杠,bash也会将美元符号$及其后面的内容解释为正则表达式中插入的变量。但这样做似乎解决了这个问题:

egrep "\Q$\E[0-9]+(\.[0-9][0-9])?" input

编辑:使用单引号(@Mark Plotnick建议)似乎也可以做到这一点:

egrep '\$[0-9]+(\.[0-9][0-9])?' input