2017-02-20 8 views
0

私はJavaアプリケーションを開発中です。モジュールの1つに入力として検索フィルタが必要です。検索フィルターには、名前、値パラメーターがあります。プログラムは、以下のパターンを検出し、解析することができるはずです。Javaアプリケーション検索フィルタの解析

1. ((Name='Shaina')&(ID='26')) 

2. (Name='Shaina') 

私のようなキーと値のペアを取得するためのフィルタを解析できるようにする必要があります。 名=「Shaina」 ID = '26' と

私はこれらの名前と値のペアをいくつかのデータベースクエリと関連する処理に使用しています。 私はJava正規表現を使い始めましたが、パラメータの数が動的なので、私にとっては複雑です。

これを達成するには、効率的な方法を提案するか、正しい方向に向けることができますか?非常に基本的な構文解析のために

おかげで、
サッシ

+0

あなたは名前で表現をフィルタリングしますか?私はundestandをしなかった。 – bpedroso

+0

@bpedroso質問を編集しました。ありがとうございました。 –

+0

論理演算子またはキー=値部分だけを検出する必要がありますか? – zerologiko

答えて

0

あなたの使用例では、中括弧と 'を削除し、' & 'で分割し、キーと値のペアを解析することをお勧めします。

例コード

str = str.replaceAll("[()']", ""); 
String[] elements = str.split("&"); 
for (String elem : elements) { 
    String[] pair = elem.split("="); 
    String key = pair[0]; 
    String value = pair[1]; 
} 
2

あなたは ([A-Z,a-z,0-9]+)='([A-Z,a-z,0-9]+)'

テストのような正規表現を使用して、ここで:)あなたの正規表現を向上させることができます。Javaでhttp://regexr.com/3fbak

あなたが使用することができますがPatternおよびMatcher(Lars Vogelによるthis tutorialを参照)。