正则表达式。重复一个架构

时间:2011-11-20 20:05:07

标签: c# regex

我有一个这样的字符串:

Literal text1: XXXXX Literal text2: XXXXX

如果XXX是长度未知且未知字符的文本,可能是数字,可能是字符或符号。 具有相同文字文本的该字符串可以重复X次,如下所示:

Literal text1: XXXXX Literal text2: XXXXX
Literal text1: XXXXX Literal text2: XXXXX
Literal text1: XXXXX Literal text2: XXXXX
Literal text1: XXXXX Literal text2: XXXXX
...

是否有正则表达式,无论行数如何都可以匹配,并获取所有XXXXX字段,而不管要获取的值的数量。

3 个答案:

答案 0 :(得分:2)

通常这就是你使用正则表达式所具有的“全局匹配”功能。 (例如,在Python中它是re.findall;在Perl中它是/.../g。)

Python中的示例:

import re

for match in re.findall(r"Literal text1: (.*?) Literal text2: (.*?)", your_str):
    # Do something with the match
    print match.group(1)
    print match.group(2)

答案 1 :(得分:0)

从您的问题中不清楚,但使用反向引用,此正则表达式将匹配XXXXX在每个匹配行中的XXXXX相同的任何内容:

(\w+) text1: (.*?) \1 text2: \2

例如,这将匹配

abcd text1: foo abcd text2: foo

'$ 2'将成为捕获foo

答案 2 :(得分:0)

编辑:您可以阅读unitl下一行以$

开头,而不是直到Literal的行尾。

这也可以Literal\s*\w+:\s*(.*?)Literal\s*\w+:\s(.*?)Literal

第1组:XXXXX for text1。

第2组:XXXXX for text2。