说我有一个字符串

"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

10-07 18:15