188

我发现在123,\d匹配13不是2。我想知道是否\d匹配满足什么样的要求的数字?我说的是 Python 风格的正则表达式。

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

123

只有13由正则表达式匹配\d2不是。

一般对于中间没有其他字符的数字序列,只有奇数位匹配,偶数位不匹配。例如在 中12345,匹配项是1,35

4

6 回答 6

530

[0-9] 并不总是等价\d。在python3中,[0-9]只匹配0123456789字符,而\d匹配[0-9]其他数字字符,例如东方阿拉伯数字٠١٢٣٤٥٦٧٨٩

于 2011-06-25T18:06:14.277 回答
17

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

于 2011-06-25T17:38:13.340 回答
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>
于 2011-06-25T17:36:18.003 回答
10

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

于 2014-06-16T08:56:15.403 回答
8

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

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

于 2015-02-01T16:32:26.527 回答
2

有关 .NET / C# 的信息:

十进制数字字符:\d \d 匹配任何十进制数字。它相当于 \p{Nd} 正则表达式模式,它包括标准的十进制数字 0-9 以及许多其他字符集的十进制数字。

如果指定了符合 ECMAScript 的行为,则 \d 等效于 [0-9]。有关 ECMAScript 正则表达式的信息,请参阅正则表达式选项中的“ECMAScript 匹配行为”部分。

信息:https ://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions#decimal-digit-character-d

于 2020-03-05T08:15:56.720 回答