关于正则表达式中的 “?”

这个问号有两层意思

一为匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。

二为当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})
后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",’o+?’ 将匹配单个 "o",而 ‘o+’ 将匹配所有 ‘o’。

所以 (.*?)中问号的含义应匹配第二种解释,就是非贪婪模式,最小匹配原则

原创文章,转载请注明: 转载自混沌

本文链接地址: 关于正则表达式中的 “?”