2012-02-15 11 views
0

キーワードのリストを含む設定ファイルがあります。各キーワードの後に​​は、1つ以上の値を含むブロックがあり、それぞれが引用符で囲まれています。例:Regex(Java):特定のキーワードに続く文字列の解析

SrcDir { "D:\Temp\Input\" } 
WorkDir { "D:\Temp\Work\" } 
Folders { 
    "Standard Color Workflow" 
    "Normal" 
    "Fast" 
} 

キーワードをキャプチャグループとして返​​し、次に対応する値のリストを返す正規表現を作成しようとしています。

私は([\w]+)\s\{([^}\n]+)}\nを使い始めましたが、明らかに上記のサンプルのFoldersセクションでは機能しません。また、この正規表現はすべて同じ行にあっても複数の値を返すことはできません。

これについてのお手伝いがあれば幸いです。

+0

あなたはどの正規表現ライブラリを使用していますか? Java正規表現ですか? –

答えて

0

基本的にはあります。あなたは\nの参考文献を排除するだけです。以下のように:

([\w]+)\s\{([^}]+)} 

さて、それは三番目のケースでは意味、すべてのこれらのフィールドは、その\ nの者がキャプチャグループ内に埋め込まなければならないこと。

今のところ、「この正規表現はすべて同じ行にあっても複数の値を返すことはできません」というコメントがあります。だから、おそらく私はあなたの問題を理解していません。

--- EDIT:

、自分のキャプチャグループにこれらのそれぞれを取得するには、別途引用符を指定します。これを試してみてください:

([\w]+)\s\{(\s*"([^}"]+)"\s*)+} -- doesn't work 

--- EDIT 2:動作しません。自分のグループにそれらをそれぞれ取得する

私の例。それはできません。 StackOverflow: 5018487

元の正規表現を使用することをお勧めします。{の中にある文字列の完全なセットを取り出し、一致するテキストの2番目の正規表現検索を実行して各 "テキスト"を取り出します。

ありがとう、私は今日何かを学んだ!

+0

これで終わりです。正規表現に値を自分のキャプチャグループに分割させる方法はありますか?言い換えれば、Foldersグループの3つの値は独自のキャプチャグループになり、それらの間の空白は削除されますか? – Tony

+0

私はそれに似たものを試しましたが、リストの最後の項目だけを返します(例:フォルダの例では "Fast")。 – Tony

+0

これはうまくいかないことがわかります。これを見ていただきありがとうございます、マイク私はあなたの提案を実装するために作業します。 – Tony