正则表达式"foo??bar"为什么不能匹配字符串"foobar"?
时间: 2023-08-27 10:11:08 浏览: 142
出错的正则文本,不知道为什么
正则表达式"foo??bar"中的"?"是一个量词符号,表示前面的字符"o"出现0或1次。在这个正则表达式中,"?"的作用是将字符"o"变成可选的,也就是说,这个正则表达式可以匹配"foobar"和"foobbar"这两个字符串。
但是,在Java中,"?"还有另外一个含义,即将前面的字符或子表达式设为"懒惰模式",也就是尽可能少地匹配字符。因此,在Java中,正则表达式"foo??bar"的含义是:匹配以"foo"开头,以"bar"结尾的字符串,并且尽可能少地匹配字符"o"。
由于字符串"foobar"中的字符"o"只能出现1次,因此这个正则表达式无法匹配字符串"foobar",只能匹配字符串"foobbar"。
阅读全文