正则表达式只匹配美元符号,金钱,小数

时间:2017-04-23 11:57:29

标签: python regex python-2.7

正则表达式

y = [X: $1.19] [Y: $5.29] [Z 999/1000]
x = re.findall(r"\$[^ ]+", y)

匹配

$1.19] 
$5.29]

预期匹配

$1.19
$5.29

如何调整我的正则表达式以匹配可能包含小数的金额并且必须包含美元符号? - 这些值可以改变。 E.G:

$x.xx # 'x' representing a number

4 个答案:

答案 0 :(得分:8)

您可以使用以下正则表达式进行搜索。

正则表达式: \$\d+(?:\.\d+)?

说明:

\$:确保美元符号后跟

\d+:更多或一位数

(?:\.\d+)?:小数部分是可选的

Regex101 Demo

答案 1 :(得分:2)

只需用闭括号替换否定字符类中的空格:

In [37]: x = re.findall(r"\$[^\]]+", y)

In [38]: x
Out[38]: ['$1.19', '$5.29'] 

答案 2 :(得分:0)

此案例的最佳正则表达式

\$\d+(?:.(\d+))?

<强>解释

\ $ 显示它应以美元符号开头

\ d + 匹配小数点前的所有数字

如果小数点后有任何数字,

(?:。(\ d +)) 匹配。例如,在 $ 1.12 中,它将匹配 .12 并捕获12(小数点后的部分)。如果这笔钱 $ 1。,它只会匹配 $ 1 ,它与不匹配。

<强> Regular Expression tester, library, tutorials and cheat sheet.

答案 3 :(得分:0)

[\$ ]+?(\d+([,\.\d]+)?)

说明

[\$ ]+?接受美元,用您需要的货币替换\$

(\d+([,\.\d]+)?)位数字,以逗号和句点重复任意次。英国编号系统或R

都没关系