关于python:regex中的d是指数字吗?

Does “d” in regex mean a digit?

我发现在123中,\d13相匹配,但与2不匹配。我在想,如果\d匹配一个满足什么要求的数字?我说的是python风格的regex。

gedit中的正则表达式插件正在使用python样式的regex。我创建了一个文本文件,其内容是

1
123

只有13与regex \d匹配;2不匹配。

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


[0-9]并不总是等同于\d。在python3中,[0-9]只匹配0123456789个字符,而\d匹配[0-9]和其他数字字符,例如东方阿拉伯数字??????????


\d匹配大多数regex语法样式中的任何单个数字,包括python。正则表达式引用


EDCOX1与9的序列匹配Java中的三个数字序列。


在python风格的regex中,\d匹配任何单个数字。如果您看到的内容似乎没有做到这一点,请提供您正在使用的完整regex,而不是仅仅描述一个特定的符号。

1
2
3
4
5
6
7
>>> 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>


这只是一个猜测,但我认为你的编辑实际上匹配每一个数字-123,但只突出显示奇数匹配,以区别于整个123字符串匹配的情况。

大多数regex控制台使用不同的颜色突出显示连续匹配,但由于插件设置、终端限制或其他原因,在您的情况下,可能只突出显示其他组。