【发布时间】:2015-11-13 08:12:56
【问题描述】:
我一直在尝试自学 Python,目前正在学习正则表达式。我一直在使用的说明性文本似乎旨在教授 Perl 或其他一些不是 Python 的语言,因此我不得不稍微调整表达式以适应 Python。然而,我不是很有经验,而且我在试图让表达发挥作用时遇到了障碍。
问题涉及在文本中搜索价格实例,用不带小数的 $500 或带小数的 $500.10 表示。
这是文中推荐的:
\$[0-9]+(\.[0-9][0-9])?
复制文字,我用这段代码:
import re
inputstring = "$500.01"
result = re.findall( r'\$[0-9]+(\.[0-9][0-9])?', inputstring)
if result:
print(result)
else:
print("No match.")
但是,结果不是 $500.01,而是:
.01
我觉得这很奇怪。如果我删除括号和可选的小数部分,它工作正常。所以,使用这个:
\$[0-9]+\.[0-9][0-9]
我明白了:
$500.01
如何让正则表达式返回带小数部分和不带小数部分的值?
谢谢。
【问题讨论】:
-
现在this是一个关于正则表达式的好问题。
-
Jordan H. 欢迎来到 SO。很高兴看到用户在第一天就发布了一个问题,该问题显示了研究工作,制定良好并符合 SO 准则。