我想为美元货币创建一个正则表达式。
这个例子可以通过正则表达式找到:
$ 10
10$
10 $
1000005 dollars
这不应该匹配:
dollars 33
我已经使用了以下表达式:
r_dollar = r'(\$|\$usd|usd|dollar(s)?|bucks)'
number = '([1-9]([0-9])+)'
valuta_with_num = u'(({0})\s?{1})|({1}\s?({0}))'.format(number, r_dolar)
currency_tags = re.compile(u'({0})'.format(valuta_with_num))
我怎样才能做到这一点?
最佳答案
使用轮换的另一种选择可能是:
(?:\$\s*\d+|\d+\s*(?:\$?usd|\$|dollars?|bucks))
说明
(?:
非捕获组\$\s*\d+
匹配一个美元符号,0 +乘以空格字符和1+位数|
或\d+\s*
匹配1+个数字,后跟0+个空白字符(?:
非捕获组\$?usd|\$|dollars?|bucks
匹配其中\$?
是可选美元符号的任何选项)
关闭非捕获组)
关闭非捕获组Regex demo