如何在OR列表正则表达式中查找最少的捕获组

我想用正则表达式me_start:捕获以下me_start: ([\s\S]{1,})(?:end_1|end_2|end3)模式之后的单词,直到找到该OR列表中描述的单词。但是它可以以其他方式工作,并且可以捕获最长的组。

示例:

me_start: cat end_1 dog end_2 在这句话中,我想捕获cat个单词,但它捕获cat end_1 dog个单词。 如何以我需要的方式制作

Sappley 回答:如何在OR列表正则表达式中查找最少的捕获组

{1,}贪婪量词更改为非贪婪版本{1,}?

>>> re.match(r'me_start: ([\s\S]{1,}?)(?:end_1|end_2|end3)','me_start: cat end_1 dog end_2').groups()
('cat ',)

来自re documentation

  

使结果RE匹配m个到n个重复   RE之前,尝试匹配尽可能少的重复。这个   是前一个限定词的非贪婪版本。例如,在   6个字符的字符串'aaaaaa',a {3,5}将匹配5个'a'字符,   而{3,5}?只能匹配3个字符。

本文链接:https://www.f2er.com/3151604.html

大家都在问