Python 正则表达式中的紧凑非贪婪匹配
考虑需要一个正则表达式匹配来捕获字符串的最小可能部分。如何纠正Python默认的贪婪方法,即捕获最大子串?
解决方案在于非贪婪匹配运算符?,它指示Python捕获最大子串可能的最小文本量。为了说明其多功能性,请考虑将正则表达式“(.)”应用于字符串“a (b) c (d) e”。通常,它会捕获“b) c (d”,包含整个嵌套表达式。
但是,通过使用非贪婪限定符 ?,修改后的正则表达式“(.?) " 而是捕获所需的“b”。这是因为 ?* 指示 Python 匹配尽可能少的文本,优先考虑“b”的立即匹配,而不是扩展到更大的组。
有关贪婪与非贪婪的官方 Python 文档指出,非贪婪限定符“匹配尽可能少的文本”。因此,当面临捕获最佳简洁子字符串的困境时,非贪婪运算符 ?* 成为最终的解决方案,允许简洁高效的正则表达式。
以上是如何在 Python 正则表达式中实现紧凑的非贪婪匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!