【问题标题】:Matching dollar amount in REGEXP using egrep使用 egrep 匹配 REGEXP 中的美元金额
【发布时间】:2018-02-13 04:43:34
【问题描述】:

只是想知道为什么这个表达式 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

【问题讨论】:

  • 可能是因为使用的示例来自《O'Reilly-掌握正则表达式》一书。尽管如此,我已经查看了这个问题,但答案似乎仍然不符合我的要求。
  • 正则表达式中的那个句点. 将完全匹配任何字符,你知道的。我想你的意思可能是\.
  • @CharlesSrstka 我的错。是的,我就是这个意思。我现在已经编辑了。
  • 把双引号改成单引号会怎样?

标签: regex unix


【解决方案1】:

在我的机器上尝试它,似乎即使在它前面有反斜杠,bash 也将美元符号 $ 以及它后面的任何内容解释为要插入正则表达式的变量。不过,这样做似乎可以解决它:

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

编辑:使用单引号(@Mark Plotnick 建议)似乎也可以解决问题:

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

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2017-01-18
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多