我想为美元货币创建一个正则表达式。
这个例子可以通过正则表达式找到:

$ 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

09-26 16:02