1

Для регулярных выражений какая разница между (.*?) и (.*)??

1 ответ1

4

Я использовал тестер regex на regex101.com (без принадлежности), чтобы проверить их.

(.*?) соответствует любому символу (.) любое количество раз (*), как можно меньше раз, чтобы сделать регулярное выражение (?). Вы получите совпадение для любой строки, но захватите только пустую строку из-за вопросительного знака. Эта функция гораздо полезнее, когда у вас есть более сложное регулярное выражение. Здесь синтаксическому анализатору совсем не нужно ничего захватывать, чтобы получить совпадение: звездочка допускает любое количество символов в группе захвата, а знак вопроса заставляет синтаксический анализатор сохранять как можно больше из входного текста для последующего использования, в результате чего ни в чем не захвачен.

(.*)? захватывает группу ноль или один раз (?). Эта группа состоит из серии любой длины (*) любого символа (.). Это также будет соответствовать чему угодно, но будет захватывать первую строку, так как точка соответствует любому, кроме новой строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .