我想使用regex(Python3)提取每个NAME_
组的信息。
AB_ NAME_ 111 "fruit";
AB_ EX_ 111 first_fruit "banana";
AB_ EX_ 111 second_fruit_info "Do you like
apple
or grape?";
AB_ EX_ 111 third_fruit "tomato";
AB_ NAME_ 120 "food";
AB_ NAME_ 130 "clothes";
AB_ EX_ 130 first_clothes "t-shirt";
我想得到的结果是三组
(一)
AB_ NAME_ 111 "fruit";
AB_ EX_ 111 first_fruit "banana";
AB_ EX_ 111 second_fruit_info "Do you like
apple
or grape?";
AB_ EX_ 111 third_fruit "tomato";
AB_ NAME_ 120 "food";
AB_ NAME_ 130 "clothes";
AB_ EX_ 130 first_clothes "t-shirt";
它们是由它们的ID(Name_ ID
)分割的。我将非常感谢任何建议。谢谢。
我尝试捕获AB_ NAME_
信息,后面跟随零个或多个AB_ EX_
信息,如下所示,但失败了。我还使用了“re. S”、“re.M”标志,但效果不佳。
AB_ NAME_ \d+ .+;\n(AB_ EX_ \d+ (.|\n)+;\n)*
1条答案
按热度按时间wnavrhmk1#
您应该使用
re.DOTALL
使所有下一个线符号与.
匹配,然后您可以使用findall()
获得所有结果,如下所示:正则表达式模式如下:
AB_ NAME_.*?(?=AB_ NAME_|$)
这部分
(?=AB_ NAME_|$)
搜索下一个AB_ NAME_
或行尾(在本例中是整个字符串的行尾)。