0

添付のコードで、String toParse = "love love koo lovelovekoo";を変更しようとしています。出力を取得します

結果の愛の愛結果の愛の愛

しかし、私が使用しているパターン

愛[^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"

あなたの結果は group(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 に答える