2017-03-02 8 views
0

引用符を含む文字列値を取得するためにregexを使用しています。以下の例では、バリュー・サマリー・キーを「ここではサマリー」として取得したいと考えていますが、現時点では、以下のプログラムの出力として「ここです」と表示されています。 。任意の助け引用符を含む文字列を取得する正規表現

String in = "summary = \"Here is \"summary\""; 

    Pattern p = Pattern.compile("'(.*?)'|\"(.*?)[^\\\"]+\""); 
    Matcher m = p.matcher(in); 

    while(m.find()) { 
     System.out.println(m.group()); 
    } 

おかげ

+0

使用貪欲マッチングに変更する必要があります: 'パターンp = Pattern.compile( " '(*)' | \"(*)\ "")); –

+0

3つの '\" 'を含む間に入力を修正しますか? – MohaMad

+0

貪欲もうまく機能します。 Wiktorに感謝します。 – AAjit

答えて

1

使用この1:

/\\["']((?:[^"\\]|\\.)*)\\["']/ 

デモ:https://regex101.com/r/033EKx/1

注意:正規表現を構築しようとすると。"により、\\\や他の特殊文字("'

rStr = "/\\\\[\"\']((?:[^\"\\\\]|\\\\.)*)\\\\[\"\']/" ; 
+0

ありがとうございます。私は私のソリューションに合うようにビットを変更しました "((?:[^" \\] | \\。)*) " – AAjit

+0

スレッド" main "のJava Exceptionで例外が発生するjava.util.regex.PatternSyntaxException:インデックス22 [?](?:[^ "\] | \))*)[" '] – AAjit

+0

文字列の正規表現パターンを "文字列定義者で変換中に問題が発生しました。 – MohaMad

関連する問題