1
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つの正規表現を試してみましたが、複雑な構文解析のための助けが必要
ありがとうございます。
可能な重複します(http://のstackoverflow。 – Biffen
あなたの正規表現が[バックスラッシュ地獄](https://tudorbarbu.ninja/backslash-hell/)のように見えるとき、あなたのアプローチを再考する時です。 –
私は正規表現ではなくパーサを使うことに傾きたいと思うかもしれません。 –