对Java正则表达式中的文本字符串求反
因此,正则表达式似乎在尽可能长的匹配上匹配。例如:对Java正则表达式中的文本字符串求反,java,regex,Java,Regex,因此,正则表达式似乎在尽可能长的匹配上匹配。例如: public static void main(String[] args) { String s = "ClarkRalphKentGuyGreenGardnerClarkSupermanKent"; Pattern p = Pattern.compile("Clark.*Kent", Pattern.CASE_INSENSITIVE); Matcher myMatcher = p.matcher(s); in
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());
}
}
产生输出
Pattern p = Pattern.compile("Clark[^((Kent)*)]Kent", Pattern.CASE_INSENSITIVE);
这不管用,但你明白我想说的。我想要从Clark到Kent的字符串,它不包含任何Kent的出现
此字符串:
克拉克拉尔普肯特格格林加德纳布鲁塞巴特曼肯特
应该产生产出
贪婪和不情愿是你在这里的朋友
尝试:
Clark.+?Kent
使用相关的?
后缀:Clark.*?Kent
量词?
,*
,+
后面可以跟着?
,以指示它们应该尽快停止
请参见您想要的是“不情愿”而不是“贪婪”的量词。简单地放一个?当你尝试“Clark[^((Kent)*]]Kent”
时,我想你想要的是“Clark((?!Kent)。)*Kent”
(向下滚动一点到“Look Around Assertions”标题)
括号指定字符匹配与模式匹配。因此,RegExp试图找到一个不在(,K,e,n,t,),*
中的字符