📅  最后修改于: 2023-12-03 15:09:56.508000             🧑  作者: Mango
悬空元字符"?"是一个非常有用的元字符,它可以匹配前面的字符出现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次,也可以实现懒惰匹配,用于优化匹配。熟练掌握"?"的使用可以让我们更好地写出强大的正则表达式。