2017-01-04 4 views
1

私は文字列アンドロイド:複雑な文字列の必要性のRegex

String myData = "status:\" op en \" AND \"Managed Type\":\"El ectrical\" AND status:verified status:\"resolved\" OR Managed Type:\"Ci vil\""; 

を持っている私は、すべての個別の値に必要と文字列から属性。

私は

Pattern pattern = Pattern.compile(
       "\\s*[OR|AND]?\\s*(\"?[[\\s*]?\\w*[\\s*]?]*\"?)\\:\"?(([\\s*\\(\\)<>/\\\\\\$\\=\\#\\+%^'`&!{}:;|\\?\\*\\.\\[\\],[email protected]]?\\w*[\\(\\)<>/\\\\\\$\\=\\#\\+%^'`&!{}:;|\\?\\*\\.\\[\\],[email protected]]?\\s*)*)\"?\\s*[OR|AND]?\\s*", 
       Pattern.CASE_INSENSITIVE); 
     Matcher matcher = pattern.matcher(mydata); 
     while (matcher.find()) { 
      System.out.println(matcher.group(1) + " : " + matcher.group(2)); 
     } 

出力はその

status : op en 
"Managed Type" : El ectrical 
D status : verified status: 
" OR Managed Type : Ci vil 

受理結果

status : op en 
"Managed Type" : El ectrical 
status : verified 
status: resolved 
Managed Type : Ci vil 
のようであるいくつかのレベルとしての要件を満たすパターンで1つの正規表現を試してみましたが、複雑な構文解析のための助けが必要

ありがとうございます。

+0

可能な重複します(http://のstackoverflow。 – Biffen

+2

あなたの正規表現が[バックスラッシュ地獄](https://tudorbarbu.ninja/backslash-hell/)のように見えるとき、あなたのアプローチを再考する時です。 –

+3

私は正規表現ではなくパーサを使うことに傾きたいと思うかもしれません。 –

答えて

0

私は同じ問題を持っていたし、私は(私はiOSのにしようとしたことに注意してください)正常に動作している正規表現文字列、次の試してみました:[正規表現を学ぶ]の

NSString *regExPattern = @"(\\w*|\"[\\w\\s]{1,}\"):(\"[\\w\\s]{1,}\"?|\\w*)"; 
+0

ありがとう –

関連する問題