所以正则表达式似乎与最长的匹配相匹配.例如:
public static void main(String[] args) { String s = "ClarkRalphKentGuyGreenGardnerClarkSupermanKent"; Pattern p = Pattern.compile("Clark.*Kent", Pattern.CASE_INSENSITIVE); Matcher myMatcher = p.matcher(s); int i = 1; while (myMatcher.find()) { System.out.println(i++ + ". " + myMatcher.group()); } }
生成输出
ClarkRalphKentGuyGreenGardnerClarkSupermanKent
我想要这个输出
ClarkRalphKent
ClarkSupermanKent
我一直在尝试以下模式:
Pattern p = Pattern.compile("Clark[^((Kent)*)]Kent", Pattern.CASE_INSENSITIVE);
这不起作用,但你看到我想说的话.我想要从Clark到Kent的字符串不包含任何Kent的字符串.
这个字符串:
ClarkRalphKentGuyGreenGardnerBruceBatmanKent
应该产生输出
ClarkRalphKent
Gareth Davis.. 6
贪心vs不情愿是你的朋友.
尝试: Clark.+?Kent
贪心vs不情愿是你的朋友.
尝试: Clark.+?Kent