我有很多数据需要解析并以不同的格式输出。数据看起来像这样:
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已经包含必要的数据,我只需要提取该值,但是无论我做什么,它似乎都不匹配。我看了好几个小时,但似乎并没有发现我在做什么错。
答案 0 :(得分:1)
尝试使用正则表达式tag=\"001\">(.*?)<
并捕获第一组ID.group(1)
答案 1 :(得分:1)
问题是,提前行不会将匹配位置移至右侧,因为它们不匹配任何内容-它们只是 look 。
很明显,按照建议的方法使用匹配组是到达这里的最简单方法,因为您不必费劲避免匹配不需要的部分。
但是,如果您的“ 001”不是可变长度,我想您想要的实际上是一个先行/先行(不是先行/先行):
(?<=tag="001">).*(?=<)