正则表达式(Regular Expression,简称regex)是一种用于匹配字符串中字符组合的模式。在Python中,re
模块提供了对正则表达式的支持。捕获组(Capturing Group)是正则表达式中用圆括号括起来的一部分,用于从匹配的文本中提取数据。
re.match(r'foo', 'foobar')
。re.match(r'(foo)', 'foobar')
,其中(foo)
是一个捕获组。re.match(r'foo*', 'foobar')
,其中*
表示前面的元素可以重复0次或多次。假设我们有一个HTML标签,我们想要重复捕获其中的某些内容。例如,从<div>text1</div><div>text2</div>
中捕获所有的text
内容。
直接使用简单的捕获组无法实现重复捕获,因为每次匹配后,捕获组的内容会被重置。
我们可以使用非捕获组和正向预查(Positive Lookahead)来实现这一目标。
import re
text = '<div>text1</div><div>text2</div>'
pattern = r'<div>(?:(?!<\/div>).)*'
matches = re.findall(pattern, text)
print(matches) # 输出: ['text1', 'text2']
(?:(?!<\/div>).)*
:这是一个非捕获组,其中(?:(?!<\/div>).)*
表示匹配任意字符(.
),但前提是这些字符后面不是</div>
(正向预查(?<!...)
)。这样,我们就可以匹配到每个<div>
标签内的内容,直到遇到下一个</div>
标签。通过这种方式,我们可以有效地在标签内重复捕获组的内容。
领取专属 10元无门槛券
手把手带您无忧上云