{site_name}

{site_name}

🌜 搜索

Python的无通配符的行为(Non-greedy behavior)是正则表达

Python 𝄐 0
python带通配符的字符串匹配,python 无符号,python 通配符匹配,python 通配符 字符串,python replace 通配符,python通配符搜索文件
Python的无通配符的行为(Non-greedy behavior)是正则表达式中的一种匹配模式,它表示尽可能少地匹配字符。在默认情况下,Python的正则表达式引擎是贪婪的(Greedy),即尝试匹配尽可能多的字符。

例如,考虑以下字符串:


text = "<html><head><title>Title</title></head></html>"


如果我们想要提取HTML标题文本,我们可以使用正则表达式<title>.*</title>。这个正则表达式会匹配整个<title>标签以及之间的所有字符。但是,我们只需要匹配标题文本而不包括标签本身。

使用无通配符的行为,我们可以修改正则表达式为<title>.*?</title>。这样就会匹配最短的字符串,也就是第一个出现的<title>和</title>之间的文本,即"Title"。注意到这里的问号就是控制正则表达式的贪心性的元素,它用于将贪婪量词转换为非贪婪量词。

另一个例子是从文本中提取注释。考虑以下HTML代码:


<html>
<head>
<title>Title</title>
<!-- This is a comment -->
</head>
<body>
<p>This is a paragraph.</p>
</body>
</html>


如果我们使用正则表达式<!--.*-->来提取注释,它会匹配整个<!-- -->标记之间的所有字符,包括标题和段落中的文本。但是,如果我们使用无通配符的行为来修改正则表达式为<!--.*?-->,就只会匹配最短的字符串,即"This is a comment"。注意到这里的问号也是控制贪心性的元素,用于将贪婪量词转换为非贪婪量词。