Java 理解正则表达式中的某些东西

Java 理解正则表达式中的某些东西,java,regex,Java,Regex,如果在字符串上使用分隔符: Scanner scanString = new Scanner(line).useDelimiter("<.*>"); Scanner scanString=新的扫描仪(行)。使用分隔符(“”); 我想知道为什么这样做不会保留文本 <a href="https://post.craigslist.org/c/snj?lang=en">post to classifieds</a> 但它将只与 <option val

如果在字符串上使用分隔符:

Scanner scanString = new Scanner(line).useDelimiter("<.*>");
Scanner scanString=新的扫描仪(行)。使用分隔符(“”);
我想知道为什么这样做不会保留文本

<a href="https://post.craigslist.org/c/snj?lang=en">post to classifieds</a>

但它将只与

<option value="ccc">community
社区

Scanner scanString=新的扫描仪(行)。使用分隔符(“”);
两者都适用


据我所知,这个
应该排除以“”开头的字符串。因此,它不应该在到达另一个“之前再次开始排除吗?这是因为第二个表达式使用了不情愿(与贪婪相反)的量词,这意味着它不会像第一个表达式那样尝试匹配整个字符串并从那里退出

此表达式
“”
尝试尽可能深入输入字符串,因此它会一直延伸到最后。一旦它到达,它会发现它有一个匹配项,因此停止。不情愿的版本
“”
不会这样做:它匹配到第一个
,然后停止


提供了一个很好的量词阅读工具。

使用Expresso:你可能还希望阅读和哇哦,这篇文章看起来非常有用。谢谢!
Scanner scanString = new Scanner(line).useDelimiter("<.*?>");