RegEx - остановка после первого матча
Мы используем это регулярное выражение для фильтрации номера заявки по теме.
Это регулярное выражение, которое мы используем: \\[\\#(.*)\\]
Тема обычно выглядит так: "[#20160708-0020] Hello blah blah"
Regex получает нас "20160708-0020"
и мы можем использовать это дальше.
Кто-то из компании начал писать такие письма: "[#20160708-0020] Hello [SQL] blah blah"
Таким образом, регулярное выражение получит нас "20160708-0020] Hello [SQL"
что явно не правильно.
Можно ли как-нибудь сказать регулярному выражению, что нужно остановиться после первого матча? Спасибо!:)
2 ответа
https://regex101.com/r/sY4pG6/1
\[\#(.*?)\]
*
в вашем регулярном выражении жадный. Он будет захватывать как можно больше.
*?
выше ленивый. Он будет захватывать как можно меньше. Это заставит ваше регулярное выражение остановиться после того первого матча.
Чтобы остановить его до того, как он пойдет дальше, вы захотите сделать свое выражение ленивым.
\[\#(.*?)\]
Обратите внимание на знак вопроса после звездочки.