我发现在123中,\d匹配1和3,但不匹配2。我想知道如果\d匹配一个数字满足什么样的要求?我说的是Python风格的正则表达式。
123
\d
1
3
2
正则表达式插件在Gedit是使用Python风格的正则表达式。我创建了一个文本文件,其内容为
正则表达式\d只匹配1和3;2不是。
一般来说,对于一个没有其他字符的数字序列,只有奇数位是匹配的,偶数位是不匹配的。例如,在12345中,匹配项是1, 3和5。
12345
5
在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>
\d匹配大多数正则表达式语法风格中的任何单个数字,包括python。 正则表达式引用 < / p >
[0-9] 并不总是等价的到\d。在python3中,[0-9]只匹配0123456789字符,而\d则匹配[0-9]和其他数字字符,例如东部阿拉伯数字٠١٢٣٤٥٦٧٨٩。
[0-9]
0123456789
٠١٢٣٤٥٦٧٨٩
\\d{3}匹配Java中任意三个数字的序列。
\\d{3}
这只是一个猜测,但我认为你的编辑器实际上匹配每一个数字——1 2 3——但只有奇数匹配被突出显示,以区分它与整个123字符串匹配的情况。
大多数正则表达式控制台用不同的颜色突出显示连续的匹配项,但由于插件设置、终端限制或其他原因,在您的情况下,可能只突出显示每个其他组。
关于.NET / c#的信息:
十进制数字字符:\d \d匹配任何十进制数字。它等价于\p{Nd}正则表达式模式,它包括标准的十进制数字0-9以及许多其他字符集的十进制数字 如果指定了符合ecmascript的行为,\d等价于[0-9]。有关ECMAScript正则表达式的信息,请参见正则表达式选项中的“ECMAScript匹配行为”部分。
十进制数字字符:\d \d匹配任何十进制数字。它等价于\p{Nd}正则表达式模式,它包括标准的十进制数字0-9以及许多其他字符集的十进制数字
如果指定了符合ecmascript的行为,\d等价于[0-9]。有关ECMAScript正则表达式的信息,请参见正则表达式选项中的“ECMAScript匹配行为”部分。
信息:https://learn.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions#decimal-digit-character-d