为了账号安全,请及时绑定邮箱和手机立即绑定

这个 re 表达式有什么区别?

这个 re 表达式有什么区别?

跃然一笑 2021-06-18 18:01:56
我正在测试 re 表达式,书中的示例是:if re.search('^X\S*: [0-9.]+', line):但是用我的表达,我得到了相同的结果:if re.search('^X\S*: [0-9]', line):有什么区别?,我看不到什么?。谢谢你。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

这是两个完全不同的正则表达式:

^X\S*: [0-9.]+
^X\S*: [0-9]

并排比较产生差异:[0-9.]+vs [0-9].

第二个只会匹配一位数字。

而第一个将匹配一个数字和点。

因此,对于以下示例,第二个将失败:

X: 1.23X: 123.3213.23131

以及任何其他数字+点的组合。

相同的结果仅适用于这样的事情:

X: 1


查看完整回答
反对 回复 2021-06-22
?
慕少森

TA贡献2019条经验 获得超9个赞

如果您只是想匹配以 X: 和数字开头的任何行,那么这些在您的程序上下文中在功能上是等效的。他们将查找和匹配这些行,并为您的 IF 语句返回 TRUE:


X: 100

X: 9.23

X: 9912.2434.2424.2435

Xabc: 1

X-rf: 0.7

但是,这些模式并不相同,如果您在不同的上下文中使用它们,它们在功能上可能不再等效。例如,如果您需要匹配整行,则必须使用re.search('^X\S*: [0-9.]+', line). 另一个模式 ,re.search('^X\S*: [0-9]', line)只匹配单个数字 0-9,之后不匹配。


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号