假设我有一个字符串
"3434.35353"
和另一个字符串
"3593"
如何创建一个正则表达式,使其能够同时匹配两个正则表达式,而不必在另一个模式失败时将其设置为其他模式?我知道\d+
会匹配3593
,但是它不会对3434.35353
做任何事情,但是(\d+\.\d+
)只会匹配带有小数点的那一个,并且没有为3593
返回匹配的结果。
我期待着m.group(1)
的回归:
"3434.35353"
或
"3593"
发布于 2012-03-27 22:45:13
您可以将?
放在一组字符后面,使其成为可选的。
你想要一个点,后面跟着任意数量的数字\.\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
发布于 2012-03-27 22:46:54
这个正则表达式应该可以工作:
\d+(\.\d+)?
它匹配一个或多个数字(\d+
),后跟一个点和一个或多个数字((\.\d+)?
)。
发布于 2012-03-27 22:46:01
使用“1或0”量词?
。您的正则表达式变成:(\d+(\.\d+)?)
。
有关可用的不同量词以及如何使用它们的更多详细信息,请参阅TextWrangler manual的第8章。
https://stackoverflow.com/questions/9891814
复制相似问题