【发布时间】:2017-02-19 16:10:34
【问题描述】:
我想了解这个 regex([0.00-9.00]+) 在 python 中的作用。我理解这一点的方式是它会匹配任何0 . 0 0-9 . 0 0,所以这里的零是多余的。由于里面有一个.,它应该匹配任何字符,并且完整的匹配应该是一个非空的字符序列,不一定是数字,但它的行为不是这样。我错过了什么吗?
【问题讨论】:
-
不,字符范围内的
.不匹配“任何”字符,仅匹配文字点。
我想了解这个 regex([0.00-9.00]+) 在 python 中的作用。我理解这一点的方式是它会匹配任何0 . 0 0-9 . 0 0,所以这里的零是多余的。由于里面有一个.,它应该匹配任何字符,并且完整的匹配应该是一个非空的字符序列,不一定是数字,但它的行为不是这样。我错过了什么吗?
【问题讨论】:
. 不匹配“任何”字符,仅匹配文字点。
零确实是多余的。 . 仅匹配文字 .,因为它是 字符类 的一部分,[...] 语法。那里没有特别的意义。
所以字符类可以简化为:
[0-9.]+
并且仍然匹配完全相同的输入。
该正则表达式文本的作者似乎将字符类中的- 功能与数字范围功能混淆了;正则表达式中没有这样的东西。您必须匹配总体上可以读取为实数的单个字符。以下实际上会匹配这些数字:
(?<!\d)\d\.\d\d(?!\d)
其中否定的后视和前瞻确保此文本周围没有更多位数字。 \d 是 [0-9] 的简写。
【讨论】: