正则表达式 "a.*?d" 匹配 "abc123def" 为什么得到 "abc1d" 而不是 "abc123d"?
正则表达式 'a.*?d' 表示以字母 'a' 开头,以字母 'd' 结尾,中间包含任意数量的字符,但是尽可能少地匹配。
在字符串 'abc123def' 中,正则表达式会先匹配 'a',然后尽可能少地匹配字符,直到匹配到 'd'。这样就得到了匹配结果 'abc1d',而不是 'abc123d'。
因为 '.?' 使用了非贪婪匹配,它会尽可能少地匹配字符,而不是像贪婪匹配那样尽可能多地匹配。所以,在 'abc123def' 中,正则表达式 'a.?d' 会选择匹配 'abc1d',因为它是最短的匹配结果。
原文地址: https://www.cveoy.top/t/topic/n1IF 著作权归作者所有。请勿转载和采集!