У меня есть текст, который состоит из информации, заключенной в определенный шаблон.
Единственное, что я знаю, это шаблон: "$ {template.start}" и $ {template.end}
Для простоты я заменим $ {template.start} и $ {template.end} на «a» в примере.
Таким образом, одна запись в тексте будет:
aINFORMATIONHEREa
Я не знаю, сколько из этих записей объединено в тексте. Таким образом, следующее тоже верно:
aFOOOOOOaaASDADaaASDSDADa
Я хочу написать регулярное выражение для извлечения информации, заключенной в "a".
Моей первой попыткой было сделать:
a(.*)a
, который работает, пока в тексте есть только одна запись. Как только появляется более одной записи, происходит сбой, поскольку .*
соответствует всему. Таким образом, использование a(.*)a
на aFOOOOOOaaASDADaaASDSDADa
приводит к получению только одной группы захвата, содержащей все между первым и последним символом текста, которые являются «a»:
FOOOOOOaaASDADaaASDSDAD
Я хочу получить что-то вроде
captureGroup(0): aFOOOOOOaaASDADaaASDSDADa
captureGroup(1): FOOOOOO
captureGroup(2): ASDAD
captureGroup(3): ASDSDAD
Было бы здорово иметь возможность извлекать каждую запись из текста и из каждой записи информацию, заключенную между «а». Кстати, я использую класс QRegExp в Qt4.
Есть подсказки? Спасибо!
Markus
Несколько вариантов этого вопроса были замечены ранее. Различные связанные обсуждения:
и, возможно, другие ...