Регекс не считает мой второй вариант действительным - PullRequest
1 голос
/ 02 апреля 2019

Я новичок в этом, и извините, если это глупый вопрос, но я не могу понять, почему мое регулярное выражение (11*|0?10*)* не считает число 110 действительным.

На мой взгляд, я могу взять 1 из первого варианта, а затем 10 из второго, получив, таким образом, 110, но контролеры регулярных выражений не считают это верным. Я что-то упустил?

1 Ответ

0 голосов
/ 03 апреля 2019

Оператор * - это то, что называется «жадным» выражением.Он будет использовать столько символов, сколько сможет.Это означает, что 11* будет захватывать 11 в 110, оставляя только 0, что не соответствует ни 11*, ни 0?10*.Я ни в коем случае не эксперт, но я использую регулярные выражения в течение 15 лет и все еще зацикливаюсь на таких вещах.

Если вы хотите слишком много подробностей по этому вопросу, отметьте этоout: https://www.rexegg.com/regex-quantifiers.html

Вы не сказали, что вы хотите сопоставить, но кажется, что вы хотите сопоставить любую итерацию с нулями и единицами, поэтому [01]* может показаться вашей лучшей ставкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...