我有一个由特定模式包含的信息组成的文本.我唯一知道的是模式:"$ {template.start}"和$ {template.end}为了简单起见,我将$ {template.start}和$ {template.end}替换为"a"例.
因此,案文中的一个条目是:
aINFORMATIONHEREa
我不知道这些条目中有多少是在文本中连接起来的.所以以下也是正确的:
aFOOOOOOaaASDADaaASDSDADa
我想写一个正则表达式来提取"a"所包含的信息.
我的第一次尝试是:
a(.*)a
只要文本中只有一个条目,它就可以工作.一旦有多个条目,就会因为.*
匹配所有内容而失效.因此,使用a(.*)a
on aFOOOOOOaaASDADaaASDSDADa
只会产生一个捕获组,其中包含文本的第一个和最后一个字符"a"之间的所有内容:
FOOOOOOaaASDADaaASDSDAD
我想得到的是类似的东西
captureGroup(0): aFOOOOOOaaASDADaaASDSDADa captureGroup(1): FOOOOOO captureGroup(2): ASDAD captureGroup(3): ASDSDAD
能够从文本中提取每个条目并从每个条目中提取"a"之间包含的信息将是很棒的.顺便说一句,我正在使用Qt4的QRegExp类.
任何提示?谢谢!马库斯
之前已经看到过这个问题的多种变化.各种相关讨论:
正则表达式替换字符串中的所有\n,但不包括[code] [/ code]标记内的所有\n
使用正则表达式如何在不包含周围字符串的情况下找到由其他两个图案包围的图案?
使用RegExp匹配括号,然后递增它
正则表达式,用于在未被单引号或双引号括起时使用空格分割字符串
什么正则表达式将匹配文本,不包括HTML标记内的内容?
可能还有其他人......
只需使用非贪婪的表达式,即:
a(.*?)a