Регулярное выражение: как использовать просмотр вперед / назад для результата шаблона?

Я пытаюсь узнать больше о регулярных выражениях сегодня .

Я просто пытаюсь сопоставить порядковый номер, не заключенный в квадратные скобки ( # 1234 , но не [# 1234] ), но мой вопрос больше касается использования утверждений опережающего просмотра по произвольному шаблону.

При первых попытках я заметил, что при моем отрицательном поиске вперед \ d + (?! \]) \ d + будет сохранять совпадающие цифры до тех пор, пока за ним не будет следовать ] .Мне нужно, чтобы цифры совпадали, только если за ними не следует ] .

Мое текущее решение уничтожает совпадение первой цифры, заглядывая вперед, чтобы увидеть, есть ли ] в цепочке цифр.

Это стандартный способ сделать это? Я просто повторяю шаблон соответствия в опережающем просмотре. Если бы это было более сложное регулярное выражение, я бы подошел к нему так же? Повторить действительное совпадение, за которым следует недопустимое совпадение, и заставить механизм регулярных выражений повторяться для каждой буквы?

Для допустимых совпадений он должен будет соответствовать самому себе столько раз, сколько символов в совпадении.

(?<!\[) # not preceded by [
#\d+ 
(?!\d*\]) # not followed zero+ digits and ] 

# or (?!\d|\]) # not followed by digit or ]

Буду признателен за любые отзывы!

5
задан Yuji 'Tomita' Tomita 18 November 2011 в 05:26
поделиться