我想在Python中匹配给定表达式之间出现的任何内容。例如:
dogdogacowadogdog <-- search a word between 'a' characters
<span>tiger<a> <-- search for sth between <span> and <a>
我只想匹配这之间的东西,所以它将分别为cow
和tiger
。但是,当使用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]
将是第一组。