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