📜  悬空元字符“?” (1)

📅  最后修改于: 2023-12-03 15:09:56.508000             🧑  作者: Mango

悬空元字符"?"

悬空元字符"?"是一个非常有用的元字符,它可以匹配前面的字符出现0次或1次。在正则表达式中,"?"通常表示可选项,用于优化匹配。

匹配0次或1次

当我们想要匹配一个字符出现0次或1次时,可以使用"?"。例如,我们想要匹配字符串"cat"或"cats":

import re

pattern = "cats?"
text = "cat cats"

result = re.findall(pattern, text)
print(result) # ['cat', 'cats']

在这个例子中,我们使用了"?"来表示字符"s"是可选的,因此它可以出现0次或1次。模式"cats?"可以匹配"cat"和"cats"。

懒惰匹配

"?"在正则表达式中还有另一个重要的作用:懒惰匹配。通常情况下,正则表达式会尽可能地匹配更多的字符。但是当我们希望尽可能地匹配尽可能少的字符时,可以使用"?"来实现懒惰匹配。

下面的例子演示了懒惰匹配的使用:

import re

pattern = "<.*?>" # 匹配最小的尖括号内的内容
text = "<div>hello</div>"

result = re.findall(pattern, text)
print(result) # ['<div>', '</div>']

在这个例子中,我们使用了"?“来表示进行懒惰匹配,匹配最小的尖括号内的内容。这个模式可以匹配"

"和"
",这是因为"?"告诉正则引擎尽可能少地匹配字符。

总结

悬空元字符"?"是一个非常有用的元字符,它可以表示前面的字符出现0次或1次,也可以实现懒惰匹配,用于优化匹配。熟练掌握"?"的使用可以让我们更好地写出强大的正则表达式。