正则表达式中的“\d”表示数字吗?
- 2024-12-31 08:37:00
- admin 原创
- 131
问题描述:
我发现在 中123
,d
匹配1
和,3
但不匹配2
。我想知道是否d
匹配满足哪种要求的数字?我说的是 Python 风格的正则表达式。
Gedit 中的正则表达式插件使用 Python 样式的正则表达式。我创建了一个文本文件,其内容为
123
只有1
和3
与正则表达式匹配d
;2
不是。
一般情况下,对于中间没有其他字符的数字序列,只有奇数位数字匹配,偶数位数字不匹配。例如在 中12345
,匹配的是1
、3
和5
。
解决方案 1:
[0-9]
并不总是等同于d
。在python3中,[0-9]
仅匹配0123456789
字符,而d
匹配[0-9]
和其他数字字符,例如东方阿拉伯数字٠١٢٣٤٥٦٧٨٩
。
解决方案 2:
d
在大多数正则表达式语法样式中匹配任何单个数字,包括python。
正则表达式参考
解决方案 3:
在 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>
解决方案 4:
\d{3}
匹配 Java 中的任意三位数字序列。
解决方案 5:
这只是一个猜测,但我认为您的编辑器实际上匹配每个数字——但只有奇数匹配才会突出显示,以区别于匹配1
2
3
整个字符串的情况。123
大多数正则表达式控制台使用不同的颜色突出显示连续的匹配,但由于插件设置、终端限制或其他原因,在您的情况下可能只会突出显示每个其他组。
解决方案 6:
有关 .NET / C# 的信息:
十进制数字字符:\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