2017-03-21 1 views
0

こんにちはこれは私の問題です。お手伝いできれば幸いです。Java RegEx文字列を引用符で囲みますが、追加要件があります

これは私の正規表現です:\"(.*?)\"と私の目標は、""の各単語などを収集することです。

私は{$= "a=" "a" 0 @paramGet ", b=" "b" 0 @paramGet ", rezultat=" "a" 0 @paramGet "b" 0 @paramGet + $}に対してそれをチェックして、私が得るすべてのグループを収集した場合:

a= a , b= b ,rezultat= a b 

しかし{$= "a=" "a" 0 @paramGet ", b\"=" "b" 0 @paramGet ", rezu\"ltat=" "a" 0 @paramGet "b" 0 @paramGet + $}に対してそれをチェックすると私は得る:

"a=" "a" ", b\" " "  " 0 @paramGet "  "ltat=" "a" "b" 

これが私の質問です:する方法はあります正規表現を認識させる

a= a , b\"= b ,rezu\"ltat= a b 

全体として?

答えて

1

それを行うには、2つの方法があります。

  1. あなたは文字の開口部を前後に二重引用符を閉じるには、バックスラッシュではないことを確認することができます。

    [^\\]\"(.*?[^\\])\"

  2. 負を使用lookbehind regex:

    (?<!\\)\"(.*?)(?<!\\)\"

    (?<!b)aaの前にbが付いていないことを意味します。

後者は、空の文字列にも一致するため、よりうまくいくように見えます。

関連する問題