说我有一个字符串
"3434.35353"
和另一个字符串
"3593"
我如何制作一个能够同时匹配两者的正则表达式,而不必在另一个失败的情况下将模式设置为其他形式呢?我知道
\d+
将与3593
匹配,但是它对3434.35353
不会做任何事情,但是(\d+\.\d+
)只匹配带小数的一个,并且没有找到3593
的匹配项。我希望
m.group(1)
返回:"3434.35353"
或者
"3593"
最佳答案
您可以在一组字符后放置?
,使其成为可选字符。
您需要一个点后跟任意数量的\.\d+
,并组合在一起(\.\d+)
和(\.\d+)?
(可选)。坚持你的模式:
import re
print re.match("(\d+(\.\d+)?)", "3434.35353").group(1)
3434.35353
print re.match("(\d+(\.\d+)?)", "3434").group(1)
3434