在RegExp中使用星号来提取由特定模式包围的数据

0 c++ regex qt4

我有一个由特定模式包含的信息组成的文本.我唯一知道的是模式:"$ {template.start}"和$ {template.end}为了简单起见,我将$ {template.start}和$ {template.end}替换为"a"例.

因此,案文中的一个条目是:

aINFORMATIONHEREa
Run Code Online (Sandbox Code Playgroud)

我不知道这些条目中有多少是在文本中连接起来的.所以以下也是正确的:

aFOOOOOOaaASDADaaASDSDADa
Run Code Online (Sandbox Code Playgroud)

我想写一个正则表达式来提取"a"所包含的信息.

我的第一次尝试是:

a(.*)a
Run Code Online (Sandbox Code Playgroud)

只要文本中只有一个条目,它就可以工作.一旦有多个条目,就会因为.*匹配所有内容而失效.因此,使用a(.*)aon aFOOOOOOaaASDADaaASDSDADa只会产生一个捕获组,其中包含文本的第一个和最后一个字符"a"之间的所有内容:

FOOOOOOaaASDADaaASDSDAD
Run Code Online (Sandbox Code Playgroud)

我想得到的是类似的东西

captureGroup(0):  aFOOOOOOaaASDADaaASDSDADa
captureGroup(1): FOOOOOO
captureGroup(2): ASDAD
captureGroup(3): ASDSDAD
Run Code Online (Sandbox Code Playgroud)

能够从文本中提取每个条目并从每个条目中提取"a"之间包含的信息将是很棒的.顺便说一句,我正在使用Qt4的QRegExp类.

任何提示?谢谢!马库斯


之前已经看到过这个问题的多种变化.各种相关讨论:

可能还有其他人......

cle*_*tus 5

只需使用非贪婪的表达式,即:

a(.*?)a
Run Code Online (Sandbox Code Playgroud)