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