正则表达式中的"\ d"是否表示数字?

Tim*_*Tim 139 python regex encoding gedit

我发现123,\d匹配1,3但没有2.我想知道是否\d匹配满足什么样的要求的数字?我在谈论Python风格的正则表达式.

Gedit中的正则表达式插件使用Python风格的正则表达式.我创建了一个文本文件,其内容为

123
Run Code Online (Sandbox Code Playgroud)

只有13正则表达式相匹配\d; 2不是.

通常对于其间没有其他字符的数字序列,只有奇数位数是匹配的,偶数位数不是.例如12345,匹配是1,35.

Kir*_*huk 449

[0-9] 并不总是等同\d.在python3中,[0-9]仅匹配0123456789字符,\d匹配[0-9]和其他数字字符,例如东部阿拉伯数字??????????.

  • +1,但mmmm ...... OP的标签是`Python`,而`\ d`只匹配Python3中的任何Unicode数字.在Python 2.7中它仍然是旧的ASCII [0-9]` - 在答案中可能值得澄清.:) (6认同)
  • 在REPL中尝试这个:`import re,re.match(r'\ d','0123456789')`显示不匹配 (2认同)
  • 对于波斯语和阿拉伯语,在 java 和 javascript 引擎中,使用 \p{Nd} (2认同)

Wil*_*ill 11

\d匹配大多数正则表达式语法样式中的任何单个数字,包括python. 正则表达式参考


Amb*_*ber 8

在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>
Run Code Online (Sandbox Code Playgroud)


小智 7

\\d{3} 匹配Java中任何三位数的序列.

  • @HasanKhatib:`\\ d +` (2认同)

小智 7

这只是一个猜测,但我认为您的编辑器实际上匹配了每个数字——1 2 3但只突出显示奇数匹配,以将其与123匹配整个字符串的情况区分开来。

大多数正则表达式控制台以不同的颜色突出显示连续匹配,但由于插件设置、终端限制或其他原因,在您的情况下,可能只会突出显示所有其他组。