Does "\d" in regex mean a digit?
I found that in 123
, \d
matches 1
and 3
but not 2
. I was wondering if \d
matches a digit satisfying what kind of requirement? I am talking about Python style regex.
Regular expression plugin in Gedit is using Python style regex. I created a text file with its content being
123
Only 1
and 3
are matched by the regex \d
; 2
is not.
Generally for a sequence of digit numbers without other characters in between, only the odd order digits are matches, and the even order digits are not. For example in 12345
, the matches are 1
, 3
and 5
.
Solution 1:
[0-9]
is not always equivalent to \d
. In python3, [0-9]
matches only 0123456789
characters, while \d
matches [0-9]
and other digit characters, for example Eastern Arabic numerals ٠١٢٣٤٥٦٧٨٩
.
Solution 2:
\d
matches any single digit in most regex grammar styles, including python.
Regex Reference
Solution 3:
In Python-style regex, \d
matches any individual digit. If you're seeing something that doesn't seem to do that, please provide the full regex you're using, as opposed to just describing that one particular symbol.
>>> 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>
Solution 4:
\\d{3}
matches any sequence of three digits in Java.