0

次のコードを使用して、JTextPane内の文字列(二重引用符で囲まれたテキストを意味します)を識別しようとしています。

Pattern string= Pattern.compile("\"/\"/.*");
Matcher matcher = string.matcher(content);

while (matcher.find()) {
    document.setCharacterAttributes(matcher.start(), matcher.end() - matcher.start(), textPane.getStyle("red"), true);
}

しかし、上記のコードは文字列を正しく識別していません。私が与えたパターンは間違っていると思います。パターンを修正してください。

皆さんありがとう!私は本当にあなたの助けに感謝します!あなたの答えはすべて正解なので、私は最良の答えを選ぶのが難しいので、私はあなた方一人一人に賛成票を投じました。あなたがそれを気にしないことを願っています:)

どうもありがとうございました!本当に感謝しています:)

4

3 に答える 3

1

使用することをお勧めする正規表現は"[^"]*". 引用してエスケープすると、"\"[^\"]*\"".

だから試してみてください

Pattern string= Pattern.compile("\"[^\"]*\"");

ただし、二重引用符を含む文字列は正しく検出されないことに注意してください。そのためJTextPane、Java が含まれていないことを願っています。

于 2012-05-10T15:54:40.520 に答える
1

正しい表現は次のとおりです。

Pattern.compile("\"[^\"]*\"");
于 2012-05-10T15:45:35.797 に答える
1
 String s = "jsdfjh shfslfh \"ksfsdkflsdaf\" 2346237846 ufhusdhfu usfhsdfis \"sadhgbshad78hgshd\" jhsdjs";
        Pattern p = Pattern.compile("\"{1}[.[^\"]]*\"{1}");
        Matcher m = p.matcher(s);
        while(m.find()){
            System.out.println(s.substring(m.start(), m.end()));
        }
于 2012-05-10T15:46:13.337 に答える