繁体   English   中英

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

[英]Regular Expression. Repeat a schema

我有一个像这样的字符串:

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字段,而不管要获取的值的数量。

通常这就是你使用正则表达式所具有的“全局匹配”功能。 (例如,在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)

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

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

例如,这将匹配

abcd text1: foo abcd text2: foo

'$ 2'将成为捕捉foo

编辑:您可以阅读unitl,而不是使用$读取行的结尾,而下一行以Literal开头

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

第1组:XXXXX用于text1。

第2组:XXXXX用于text2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM