Regex lookback和lookahead没有找到任何匹配项

2024-10-03 02:32:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多数据需要以不同的格式解析和输出。数据如下所示:

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\u行已经包含了必要的数据,我只需要提取值,但无论我做什么,它似乎都不匹配。我看了几个小时,但似乎没有发现我做错了什么。你知道吗


Tags: 数据代码ltgtreidtag格式
2条回答

问题是lookaheads不会将匹配位置移到右边,因为它们什么都不匹配-它们只是look。你知道吗

很明显,使用建议的匹配组将是最简单的方法,因为您不必费劲地避免匹配您不想要的部分。你知道吗

但是如果你的“001”不是可变长度,我认为你想要的实际上是一个lookback/lookahead(不是lookahead/lookahead):

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

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

尝试regex tag=\"001\">(.*?)<并捕获第一个组ID.group(1)

Regex

相关问题 更多 >