Я пытаюсь узнать больше о регулярных выражениях сегодня .
Я просто пытаюсь сопоставить порядковый номер, не заключенный в квадратные скобки ( # 1234
, но не [# 1234]
), но мой вопрос больше касается использования утверждений опережающего просмотра по произвольному шаблону.
При первых попытках я заметил, что при моем отрицательном поиске вперед \ d + (?! \])
\ d +
будет сохранять совпадающие цифры до тех пор, пока за ним не будет следовать ]
.Мне нужно, чтобы цифры совпадали, только если за ними не следует ]
.
Мое текущее решение уничтожает совпадение первой цифры, заглядывая вперед, чтобы увидеть, есть ли ]
в цепочке цифр.
Это стандартный способ сделать это? Я просто повторяю шаблон соответствия в опережающем просмотре. Если бы это было более сложное регулярное выражение, я бы подошел к нему так же? Повторить действительное совпадение, за которым следует недопустимое совпадение, и заставить механизм регулярных выражений повторяться для каждой буквы?
Для допустимых совпадений он должен будет соответствовать самому себе столько раз, сколько символов в совпадении.
(?<!\[) # not preceded by [
#\d+
(?!\d*\]) # not followed zero+ digits and ]
# or (?!\d|\]) # not followed by digit or ]
Буду признателен за любые отзывы!