首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中使用带有可选字符的regex?

如何在python中使用带有可选字符的regex?
EN

Stack Overflow用户
提问于 2012-03-27 22:43:19
回答 5查看 64K关注 0票数 42

假设我有一个字符串

代码语言:javascript
复制
"3434.35353"

和另一个字符串

代码语言:javascript
复制
"3593"

如何创建一个正则表达式,使其能够同时匹配两个正则表达式,而不必在另一个模式失败时将其设置为其他模式?我知道\d+会匹配3593,但是它不会对3434.35353做任何事情,但是(\d+\.\d+)只会匹配带有小数点的那一个,并且没有为3593返回匹配的结果。

我期待着m.group(1)的回归:

代码语言:javascript
复制
"3434.35353"

代码语言:javascript
复制
"3593"
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-27 22:45:13

您可以将?放在一组字符后面,使其成为可选的。

你想要一个点,后面跟着任意数量的数字\.\d+,分组在一起(\.\d+),也可以选择(\.\d+)?。把它放在你的模式中:

代码语言:javascript
复制
import re
print re.match("(\d+(\.\d+)?)", "3434.35353").group(1)
代码语言:javascript
复制
3434.35353
代码语言:javascript
复制
print re.match("(\d+(\.\d+)?)", "3434").group(1)
代码语言:javascript
复制
3434
票数 70
EN

Stack Overflow用户

发布于 2012-03-27 22:46:54

这个正则表达式应该可以工作:

代码语言:javascript
复制
\d+(\.\d+)?

它匹配一个或多个数字(\d+),后跟一个点和一个或多个数字((\.\d+)?)。

票数 5
EN

Stack Overflow用户

发布于 2012-03-27 22:46:01

使用“1或0”量词?。您的正则表达式变成:(\d+(\.\d+)?)

有关可用的不同量词以及如何使用它们的更多详细信息,请参阅TextWrangler manual的第8章。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9891814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档