Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Java正则表达式中的文本字符串求反_Java_Regex - Fatal编程技术网

对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,),*
    中的字符