«\ D» в регулярном выражении означает цифру? - PullRequest
134 голосов
/ 25 июня 2011

Я обнаружил, что в 123, \d соответствует 1 и 3, но не 2. Мне было интересно, если \d соответствует цифре, удовлетворяющей какому требованию? Я говорю о регулярных выражениях в стиле Python.

Плагин регулярных выражений в Gedit использует регулярные выражения в стиле Python. Я создал текстовый файл с содержанием

123

Регулярное выражение \d соответствует только 1 и 3; 2 нет.

Как правило, для последовательности цифр без промежуточных других символов только цифры нечетного порядка являются совпадениями, а цифры четного порядка - нет. Например, в 12345 совпадают значения 1, 3 и 5.

Ответы [ 5 ]

432 голосов
/ 25 июня 2011

[0-9] не всегда эквивалентно \d. В python3 [0-9] соответствует только 0123456789 символам, а \d соответствует [0-9] и другим цифровым символам, например восточно-арабским цифрам ٠١٢٣٤٥٦٧٨٩.

9 голосов
/ 25 июня 2011

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

7 голосов
/ 16 июня 2014

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

7 голосов
/ 25 июня 2011

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

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

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

...