Регулярное выражение для получения фрагментов текста, которые начинаются с цифры в скобках - PullRequest
0 голосов
/ 18 июня 2010

Здравствуйте, мне нужна помощь с регулярным выражением,

Я хочу сопоставить каждый раздел (число и его текст - 2 группы), текст может быть многострочным, каждый раздел заканчивается, когда начинается другой раздел (другое число) или при достижении .END или EOF.
Демо

Выражение:

\(\d{1,3}\) ([\s\S]*?)(\.END|\(\d{1,3}\))

Введите текст:

(1) some text some text
    some text some text
    some text some text  
(2) some text some textsome text

(3) some textsome text
    some textsome textsome text
(4) some text
.END

сначалагруппа должна соответствовать номеру (в скобках), а вторая группа должна соответствовать соответствующему тексту.

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Делает ли это то, что вы хотите?

\(\d{1,3}\) ([\s\S]*?)(?=(\.END|\(\d{1,3}\)))

Просто добавил «смотреть в будущее» - я довольно плохо знаком с регулярным выражением, но этот другой поток, похоже, помог

Перекрывающиеся совпадения в регулярном выражении

(Кстати, спасибо за демонстрационный сайт - раньше такого не видел!)

1 голос
/ 18 июня 2010

Добавить позитивный прогноз :

\(\d{1,3}\) ([\s\S]*?)(?=(\.END|\(\d{1,3}\)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...