在没有环境的情况下提取regex匹配



我想在Python中匹配给定表达式之间出现的任何内容。例如:

dogdogacowadogdog  <-- search a word between 'a' characters
<span>tiger<a>      <-- search for sth between <span> and <a>

我只想匹配这之间的东西,所以它将分别为cowtiger。但是,当使用Rexexexes:时

r'a(.*)a'
r'<span>(.*)<a>'

它打印了我的整行,而不仅仅是我想要的((.*)匹配的)。我如何获取这些信息?

您要查找的正则表达式是非贪婪匹配。

什么是非贪婪匹配

.*.+.?尝试匹配尽可能多的字符。在这些字符后面添加一个问号(?)将尝试匹配尽可能少的字符。如果可以的话,.*?将匹配0个字符,.+?将匹配1个字符。

回到您的问题,您应该将其用作正则表达式查询:

r'a(.*?)a'
r'<span>(.*?)<a>'

接下来是匹配本身

如果使用match = re.search(),则需要获得match.group(1)而不是match.group(0)才能接收组本身。

match.group(0)给出了整个匹配(包括组前和组后的部分)。

CCD_ 15只给出第一组。

然而,match.groups()只取出组(而不是整个匹配),因此match.groups()[0]将是第一组。

最新更新