【发布时间】:2017-05-26 18:36:28
【问题描述】:
我想知道在 java 中使用 matcher 的行为。
我有一个我编译的模式,当运行匹配器的结果时,我不明白为什么缺少特定值。
我的代码:
String str = "star wars";
Pattern p = Pattern.compile("star war|Star War|Starwars|star wars|star wars|pirates of the caribbean|long strage trip|drone|snatched (2017)");
Matcher matcher = p.matcher(str);
while (matcher.find()) {
System.out.println("\nRegex : " matcher.group());
}
我被“星球大战”击中,这在我的模式中是正确的。
但我不喜欢“星球大战”,我不明白为什么,因为它是我模式的一部分。
【问题讨论】:
-
交替组中匹配“wins”的第一个备选方案,其余不检查。一旦
star war被匹配,文本就被消费了,不会再有任何传球。这是预期的。你需要什么行为? -
有没有办法返回所有点击?
-
您必须分别对照字符串检查每个模式,而不是一长串交替。
-
明白..谢谢大家
-
见ideone.com/gGcALb。顺便说一句,你有 2 个“星球大战”:)