说我有一个字符串
"3434.35353"
Run Code Online (Sandbox Code Playgroud)
和另一个字符串
"3593"
Run Code Online (Sandbox Code Playgroud)
如何创建一个能够匹配两者的正则表达式,而不必在另一个失败的情况下将模式设置为其他模式?我知道\d+会匹配3593,但它不会做任何事情3434.35353,但(\d+\.\d+)只会匹配一个小数,并返回没有找到匹配3593.
我期待m.group(1)回归:
"3434.35353"
Run Code Online (Sandbox Code Playgroud)
要么
"3593"
Run Code Online (Sandbox Code Playgroud)
小智 54
您可以?在一组字符后面添加一个字符以使其可选.
你想要一个点后跟任意数量的数字\.\d+,组合在一起(\.\d+),可选(\.\d+)?.坚持你的模式:
import re
print re.match("(\d+(\.\d+)?)", "3434.35353").group(1)
Run Code Online (Sandbox Code Playgroud)
3434.35353
Run Code Online (Sandbox Code Playgroud)
print re.match("(\d+(\.\d+)?)", "3434").group(1)
Run Code Online (Sandbox Code Playgroud)
3434
Run Code Online (Sandbox Code Playgroud)
这个正则表达式应该工作:
\d+(\.\d+)?
Run Code Online (Sandbox Code Playgroud)
它与一个\d+或多个数字((\.\d+)?)匹配,并可选地后跟一个点和一个或多个数字()。