Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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,在所附代码中,我试图修改字符串toParse=“love-love-koo-love-koo”并获取输出 结果爱情结果爱情 但是我使用的模式 爱* 将给我输出结果 结果爱我结果爱我 即在第一次出现“k”或“o”及其拆分时, 但是我的意图是在第一次出现“辜”的时候,它必须分裂,这样我才能得到想要的结果。简言之,我的意图是创建一种模式,直到第一次出现“koo”为止 我还附上了我的java代码 public static void main(String[] args) { // regul

在所附代码中,我试图修改字符串toParse=“love-love-koo-love-koo”并获取输出

结果爱情结果爱情

但是我使用的模式

爱*

将给我输出结果

结果爱我结果爱我

即在第一次出现“k”或“o”及其拆分时, 但是我的意图是在第一次出现“辜”的时候,它必须分裂,这样我才能得到想要的结果。简言之,我的意图是创建一种模式,直到第一次出现“koo”为止

我还附上了我的java代码

public static void main(String[] args) {

    // regular expression here
    Pattern pattern = Pattern.compile("love[^koo]*");
    // String here
    String toParse = "love love koo love love koo";

    Matcher matcher = pattern.matcher(toParse);

    boolean found = false;
    while (matcher.find()) {

        System.out.println("Result "
                + toParse.substring(matcher.start(), matcher.end()));
        found = true;
    }
    if (!found) {
        // console.format("No match found.%n");
        System.out.println("No match found");
    }

}

如果我正确理解您的问题,并且您希望在koo之前获得一切,您的正则表达式应该是:

"(.+?)koo"
您的结果在组(1)中


保持简单,分开

    String str = "love love koo love love koo";
    for (String s : str.split("koo *")) {
        System.out.print("Result " + s);
    }

是的,这会找到辜的一切,但我想要的是从爱到辜的第一次出现之间的内容。假设我的toParse=“爱牛咕牛咕”。我希望结果是“爱奶牛”。(从爱情到辜的第一次出现之间的任何内容,包括爱情)。@user2118591这个怎么样<代码>(love.*?)辜,但这将包括辜。koo应该是否定的。@user2118591您是否尝试过我的代码,或者您只是在假设?我刚刚尝试过。在我的代码中,我用你的模式替换了我的模式,结果中有“koo”
    String str = "love love koo love love koo";
    for (String s : str.split("koo *")) {
        System.out.print("Result " + s);
    }