具有特殊字符和空格的货币的正则表达式

时间:2015-06-01 16:31:31

标签: regex linux grep

您好我正在尝试使用正则表达式在linux上使用grep命令过滤多个文件的内容,我正在尝试实现的是获取所有匹配(货币或值由ocr进程)

1 - 可能会也可能不会以一个空格开头

[[:space:]]\{1\}

2 - 然后它必须包含一个字符或一个空格

[Ss5$\s]\{1\}

3 - 最后必须有0到9之间的数字范围和字符,。

[0-9,.]\+

但看起来这个表达并没有涵盖像

这样的几种可能性
 192,753.50

使用正则表达式:

[[:space:]]\{1\}[Ss5$\s]\{1\}[0-9,.]\+

由于

示例输出

Example: 
--------------------------------------------------------------
.D. OF c.B. socmvo 14,255.34 14,255.34 MN 031042013 0.00 Move
 $92,300.01 $35,333  0533110:  539101043401”
192,753.50 192,753.50 MN 037042013 0.00 Moves
51111703041211.1215 $09 
s9,247.16 $9,247.16 1.111
Current:266,768.54 USD
Total:S277.777.35 USD

Approval S277.777.35 USD
--------------------------------------------------------------

Result: 
 14,255.34 
 14,255.34
 $92,300.01 
 $35,333
 539101043401
 192,753.50
 $9,247.16

Desired: 
 14,255.34
 14,255.34
 $92,300.01 
 $35,333
 539101043401 
 192,753.50 
 192,753.50
 s9,247.16 
 $9,247.16
 266,768.54
 S277.777.35

1 个答案:

答案 0 :(得分:1)

它不适用于您的示例,因为您的正则表达式不正确,但它不包含字符。 如果你想要你的字符串首先包含一个字符或一个空格,你需要指定字符的类型,如果它是一个单词字符,你可以使用\w和...对于其他情况,那么你可以使用一个字符类比如[\w ]

最后你可以使用以下正则表达式:

[[:space:]]\{1\}[\w ][0-9,.]\+[\w+ ]