"\ D" в регулярном выражении означает цифру?

Я обнаружил, что в 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

В регулярном выражении в стиле 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>

Ответ 3

\\d{3} соответствует любой последовательности из трех цифр в Java.

Ответ 4

\d соответствует любой отдельной цифре в большинстве стилей грамматики регулярных выражений, включая python. Ссылка на Regex

Ответ 5

Это просто предположение, но я думаю, что ваш редактор фактически соответствует каждой цифре - 1 2 3 - но подсвечиваются только нечетные совпадения, чтобы отличить его от случая, когда целая строка 123 соответствует.

Большинство консолей регулярных выражений выделяют непрерывные совпадения с разными цветами, но из-за настроек плагина, ограничений терминала или по какой-либо другой причине в вашем случае может быть выделена только каждая другая группа.