正则表达式中的"\d"代表数字吗?

224 投票
6 回答
576770 浏览
提问于 2025-04-16 20:16

我发现,在 123 这个字符串中,\d 可以匹配到 13,但匹配不到 2。我想知道 \d 匹配数字时有什么样的要求?我说的是 Python 风格的正则表达式。

在 Gedit 中的正则表达式插件使用的是 Python 风格的正则表达式。我创建了一个文本文件,内容是:

123

只有 13 被正则表达式 \d 匹配到;2 没有。

一般来说,对于没有其他字符夹杂的数字序列,只有奇数位置的数字会被匹配到,而偶数位置的数字则不会。例如,在 12345 中,匹配到的数字是 135

6 个回答

16

在Python风格的正则表达式中,\d可以匹配任何一个数字。如果你发现它的表现和这个不一样,请提供你使用的完整正则表达式,而不仅仅是描述那个特定的符号。

>>> import re
>>> re.match(r'\d', '3')
<_sre.SRE_Match object at 0x02155B80>
>>> re.match(r'\d', '2')
<_sre.SRE_Match object at 0x02155BB8>
>>> re.match(r'\d', '1')
<_sre.SRE_Match object at 0x02155B80>
22

\d 在大多数正则表达式的语法中,包括 Python,表示匹配任何一个数字。你可以在这里查看更多关于正则表达式的资料:正则表达式参考

597

[0-9] 并不总是等同于 \d。在python3中,[0-9] 只匹配 0123456789 这些字符,而 \d 除了匹配 [0-9] 之外,还可以匹配其他数字字符,比如东阿拉伯数字 ٠١٢٣٤٥٦٧٨٩

撰写回答