0

在附加的代码中,我正在尝试修改String toParse = "love love koo love love koo"; 并获得输出

结果爱爱结果爱爱

但我正在使用的模式

爱[^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");
    }

}
4

2 回答 2

2

如果我理解你的问题是正确的,并且你想得到一切直到 koo,你的正则表达式应该是:

"(.+?)koo"

您的结果在组中(1)

while (matcher.find()) {
        System.out.println("Result "+ matcher.group(1));
        found = true;
}
于 2013-02-28T10:15:44.197 回答
0

保持简单,拆分...

    String str = "love love koo love love koo";
    for (String s : str.split("koo *")) {
        System.out.print("Result " + s);
    }
于 2013-02-28T10:39:18.800 回答