我一直在尝试自学Python,目前正在使用正则表达式.我一直在使用的教学文本似乎旨在教Perl或其他非Python的语言,所以我不得不调整表达式以适应Python.然而,我并不是很有经验,而且我试图让表达起作用.
问题涉及在文本中搜索价格实例,表示无小数,500美元或小数,500.10美元.
这是文本建议的内容:
\$[0-9]+(\.[0-9][0-9])?
Run Code Online (Sandbox Code Playgroud)
复制文本,我使用此代码:
import re
inputstring = "$500.01"
result = re.findall( r'\$[0-9]+(\.[0-9][0-9])?', inputstring)
if result:
print(result)
else:
print("No match.")
Run Code Online (Sandbox Code Playgroud)
但是,结果不是$ 500.01,而是:
.01
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪.如果我删除括号和可选的小数部分,它可以正常工作.所以,使用这个:
\$[0-9]+\.[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)
我明白了:
$500.01
Run Code Online (Sandbox Code Playgroud)
如何使正则表达式返回带小数部分和不带小数部分的值?
谢谢.