Подтвердить что ты не робот

Что делать?: Делать в regex

У меня есть регулярное выражение, похожее на это

/^(?:\w+\s)*(\w+)$*/

Что такое ?:?

4b9b3361

Ответ 1

Это означает, что подшаблон является не-захватным подшаблоном. Это означает, что все, что соответствует в (?:\w+\s), даже если оно заключено в (), оно не будет отображаться в списке совпадений, только (\w+) будет.

Вы по-прежнему ищете конкретный шаблон (в данном случае один символ пробела, по крайней мере, одно слово), но вам все равно, что на самом деле соответствует.

Ответ 2

В дополнение к превосходным ответам, его полезность также упрощает код, необходимый для извлечения групп из согласованных результатов. Например, ваша группа (\ w +) известна как группа 1, не заботясь о каких-либо группах, которые появляются перед ней. Это может улучшить ремонтопригодность вашего кода.

Ответ 3

Это означает только группа, но не помнит сгруппированную часть.

По умолчанию ( ) сообщает движку regex запомнить часть строки, которая соответствует шаблону между ним. Но иногда мы просто хотим сгруппировать шаблон без запуска памяти регулярных выражений, чтобы мы использовали (?: вместо (