正则表达式中的“\ d”是指数字吗?
我发现123
, \d
匹配1
和3
但不是2
。 我想知道\d
是否符合什么样的要求的数字? 我正在谈论Python风格的正则表达式。
Gedit中的正则表达式插件使用Python风格的正则表达式。 我创建了一个文本文件,其内容是
123
只有1
和3
匹配的正则表达式\d
; 2
不是。
通常对于一个没有其他字符的数字序列,只有奇数的数字是匹配的,而偶数的数字则不是。 例如在12345
,比赛是3
和5
。
[0-9]
并不总是等同于\d
。 在python3中, [0-9]
只匹配0123456789
字符,而\d
匹配[0-9]
和其他数字字符,例如Eastern阿拉伯数字٠١٢٣٤٥٦٧٨٩
。
在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。 正则表达式参考
\\d{3}
匹配Java中三个数字的任何序列。
这只是一个猜测,但我认为你的编辑器实际上匹配每一个数字 – 1
2
3
– 但只有奇数匹配被突出显示,以区别于整个123
字符串匹配的情况。
大多数正则表达式控制台会突出显示不同颜色的连续匹配,但由于插件设置,终端限制或其他原因,在您的情况下,只有其他所有组可能会突出显示。