Почему это регулярное выражение разделяет последний символ строки в другой группе? - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь сделать регулярное выражение для захвата строки, но я не знаю, почему вывод ставит последний символ перед разделителем в другой группе

Это регулярное выражение, которое я использую:

(\w|\d|\s)*

Это строка, которую я использую для теста:

Eleccion Nacional 2017

Итак, в одной группе я получаю: Eleccion Nacional 2017

А в другом я получаю: 7

Может ли кто-нибудь объяснить мне, почему это происходит?

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Первый результат - полное совпадение: шаблон (\w|\d|\s)* соответствует всем входным данным Eleccion Nacional 2017. Этот первый результат не является результатом группы захвата. Это вся последовательность символов, соответствующая всему шаблону.

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

1 голос
/ 20 мая 2019

Добро пожаловать!

Здесь мы могли бы просто добавить список символов с группой захвата:

([A-Za-z0-9\s]+)

Конечно, мы можем добавить дополнительные границы, если это необходимо, например:

([A-Za-z\s]+[0-9]{4})

Демо

Или мы можем попробовать ваше оригинальное выражение:

([\w\d\s]+)

Демо

RegEx Circuit

jex.im также помогает визуализировать выражения.

Мы можем проверить в визуализаторе, как работает ваше оригинальное выражение:

enter image description here

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