正则表达式向后查找和向前查找未找到任何匹配项

时间:2018-10-23 05:24:33

标签: python regex

我有很多数据需要解析并以不同的格式输出。数据看起来像这样:

tag="001">utb20181009818<
tag="003">CZ PrNK<
...

现在,我想在“ tag =“ 001”>”之后和最后一个“ <”

之前提取“ utb20181009818”

这是我在python中的代码:

 regex_pattern = re.compile(r'''(?=(tag="001(.*?)">)).*?(?<=[<])''')
 ID = regex_pattern.match(one_line)
 print(ID)

我的变量one_line已经包含必要的数据,我只需要提取该值,但是无论我做什么,它似乎都不匹配。我看了好几个小时,但似乎并没有发现我在做什么错。

2 个答案:

答案 0 :(得分:1)

尝试使用正则表达式tag=\"001\">(.*?)<并捕获第一组ID.group(1)

Regex

答案 1 :(得分:1)

问题是,提前行不会将匹配位置移至右侧,因为它们不匹配任何内容-它们只是 look

很明显,按照建议的方法使用匹配组是到达这里的最简单方法,因为您不必费劲避免匹配不需要的部分。

但是,如果您的“ 001”不是可变长度,我想您想要的实际上是一个先行/先行(不是先行/先行):

(?<=tag="001">).*(?=<)

https://regex101.com/r/rMQnna/3/