只是想知道为什么这个表达式egrep "\$[0-9]+(\.[0-9][0-9])?" dollar.txt
与$ 4.50,$ 5.00,$ 1000不匹配。就此而言,它并不匹配任何类似的东西。
此外,表达式egrep "\$" dollar.txt
匹配
$1000 over here
no money here
有人可以解释原因。 (这个问题的两个部分)......谢谢
答案 0 :(得分:0)
在我的机器上尝试它,看起来,即使前面有反斜杠,bash也会将美元符号$
及其后面的内容解释为正则表达式中插入的变量。但这样做似乎解决了这个问题:
egrep "\Q$\E[0-9]+(\.[0-9][0-9])?" input
编辑:使用单引号(@Mark Plotnick建议)似乎也可以做到这一点:
egrep '\$[0-9]+(\.[0-9][0-9])?' input