正则表达式中的"\d"代表数字吗?
我发现,在 123
这个字符串中,\d
可以匹配到 1
和 3
,但匹配不到 2
。我想知道 \d
匹配数字时有什么样的要求?我说的是 Python 风格的正则表达式。
在 Gedit 中的正则表达式插件使用的是 Python 风格的正则表达式。我创建了一个文本文件,内容是:
123
只有 1
和 3
被正则表达式 \d
匹配到;2
没有。
一般来说,对于没有其他字符夹杂的数字序列,只有奇数位置的数字会被匹配到,而偶数位置的数字则不会。例如,在 12345
中,匹配到的数字是 1
、3
和 5
。
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]
之外,还可以匹配其他数字字符,比如东阿拉伯数字 ٠١٢٣٤٥٦٧٨٩
。