猿问

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

我正在测试 re 表达式,书中的示例是:

if re.search('^X\S*: [0-9.]+', line):

但是用我的表达,我得到了相同的结果:

if re.search('^X\S*: [0-9]', line):

有什么区别?,我看不到什么?。谢谢你。


跃然一笑
浏览 148回答 2
2回答

缥缈止盈

这是两个完全不同的正则表达式:^X\S*: [0-9.]+ ^X\S*: [0-9]并排比较产生差异:[0-9.]+vs [0-9].第二个只会匹配一位数字。而第一个将匹配一个数字和点。因此,对于以下示例,第二个将失败:X: 1.23X: 123.3213.23131以及任何其他数字+点的组合。相同的结果仅适用于这样的事情:X: 1

慕少森

如果您只是想匹配以 X: 和数字开头的任何行,那么这些在您的程序上下文中在功能上是等效的。他们将查找和匹配这些行,并为您的 IF 语句返回 TRUE:X: 100X: 9.23X: 9912.2434.2424.2435Xabc: 1X-rf: 0.7但是,这些模式并不相同,如果您在不同的上下文中使用它们,它们在功能上可能不再等效。例如,如果您需要匹配整行,则必须使用re.search('^X\S*: [0-9.]+', line). 另一个模式 ,re.search('^X\S*: [0-9]', line)只匹配单个数字 0-9,之后不匹配。
随时随地看视频慕课网APP

相关分类

Python
我要回答