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