我正在测试 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

慕少森
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,之后不匹配。
添加回答
举报
0/150
提交
取消