如何编写可以1.
匹配货币的正则表达式,它可能包含也可能不包含逗号或十进制,并且2.
只与货币代码匹配。我看到的大多是匹配的货币符号。
我希望能够匹配货币['300,000.00']
和货币代码['USD']
从这样一个完整的文本中:
Userid 9XXXX219 sales USD300,000.00 On 01-JUL-2016 08:34:32
我尝试过用小数点来匹配小数点,但我没有尝试过用小数点来匹配小数点:
s = 'USD1 USD1.00 USD100.00 USD1,000 CAD1,000.00'
re.findall(r'\d+\.\d+', s)
#matches
['1.00', '100.00', '000.00']
#should not match any other thing e.g. 1XXXX324
#instead of this:
['1','1.00', '100.00', '1,000', '1,000.00']
以及如何编写另一个regex模式来只匹配货币代码?i、 e
^{pr2}$
'\d+([.,]?\d*)*'
应该匹配所有大小写。 如果你愿意,你也可以增加空间。像这样:对于货币代码:
'[A-Z]{3}'
应该可以。在根据SilentMonk对非捕获组的建议:
^{pr2}$获取货币:
列出一份详尽的有效货币清单可能不可行,但如果货币数量有限,则可以这样做:
输出:
获取金额:
使用capturing group,
^{pr2}$re.findall
返回元组中的每个捕获。使用非捕获组(?:)
将解决此问题。在输出:
带有示例文本的插图:
输出:
阅读更多here:
(?=)
-积极展望(?<=)
-积极回望要只匹配货币,您可以使用:
(\d[0-9,.]+)
为了匹配货币代码,您可以使用:
([A-Z]+)
Demo and Explaination
相关问题 更多 >
编程相关推荐