2016-07-15 4 views
1

Мы используем это регулярное выражение для фильтрации номера билета от объекта.RegEx - остановка после первого совпадения

Это регулярное выражение мы используем: \\[\\#(.*)\\]

Субъект обычно выглядит следующим образом: "[#20160708-0020] Hello blah blah"

Regex получить это нам "20160708-0020", и мы можем использовать это в дальнейшем.

Кто-то из компании начали писать письма, как это: "[#20160708-0020] Hello [SQL] blah blah"

Таким образом, регулярное выражение будет получить нас "20160708-0020] Hello [SQL", который, очевидно, не является правильным.

Есть ли способ сказать regex остановиться после первого матча? Благодаря! :)

ответ

0

https://regex101.com/r/sY4pG6/1

\[\#(.*?)\] 

В * в своем регулярном выражении жаден. Он будет захватывать как можно больше.

*? наверху лента. Он будет захватывать как можно меньше. Это заставит ваше регулярное выражение остановиться после первого совпадения.

1

Чтобы остановить его, прежде чем он будет идти дальше, вы захотите сделать свое выражение lazy.

\[\#(.*?)\]

Обратите внимание на знак вопроса после звездочки.