在java中使用正则表达式否定第一次出现的特定String。

时间:2013-02-28 10:08:49

标签: java regex

在附加的代码中,我试图修改 String toParse =“love love koo love love koo”; 并获得输出

  

结果爱情结果爱情

但我正在使用的模式

  

爱[^辜] *

会给我输出结果

  

结果爱l结果爱l

即在第一次出现'k'或'o'时它的分裂, 但我的意图是第一次出现“koo”它必须拆分,这样我才能得到理想的结果。简而言之,我的目的是创建一个模式,直到第一次出现“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");
    }

}

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题是正确的,并且你希望得到所有的东西直到koo,你的正则表达式应该是:

"(.+?)koo"

您的结果在群组(1)

while (matcher.find()) {
        System.out.println("Result "+ matcher.group(1));
        found = true;
}

答案 1 :(得分:0)

保持简单,分裂......

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