(.*?) 是一个常用的正则表达式模式,表示匹配任意个字符(除了换行符)并且尽可能少地匹配,即使用非贪婪匹配。
其中,.* 表示匹配任意个字符(除了换行符),? 表示尽可能少地匹配。
这个模式通常用于需要匹配一段文本中的某个特定部分的场合,例如:
从一段 HTML 代码中匹配出所有的链接地址;
从一篇文章中匹配出所有的段落。
以下是一个使用 (.*?) 正则表达式模式匹配 HTML 代码中所有链接地址的示例代码:
import re
# 待匹配的 HTML 代码
html = """
<a href="https://www.example.com">Example</a>
<a href="https://www.python.org">Python</a>
"""
# 正则表达式模式
pattern = r'<a href="(.*?)">.*?</a>'
# 使用 re.findall 函数匹配所有链接地址
matches = re.findall(pattern, html)
# 输出所有匹配到的链接地址
for match in matches:
print(match)
在这个示例代码中,我们定义了一个正则表达式模式,使用 re.findall 函数匹配所有链接地址,并输出所有匹配到的链接地址。
输出结果为:
https://www.example.com
https://www.python.org
可以看到,我们成功使用 (.*?) 正则表达式模式匹配了 HTML 代码中的所有链接地址,并输出了匹配结果。