こんにちは、この質問が何度も出されていることを知っています。正規表現を使用して繰り返し式を見つけるために SO の誰かが提案したのと同じ方法を使用しましたが、正しく機能しません。次のようなパターン ファイルがあり、正規表現を使用して Java で解析する必要があります。
[Abc]
var1 = "val1"
var2 = val2
[Def]
var1 = "\[val1\]"
var2 = 1;
var3 = val3
[Xyz]
var1 = val1
(\[([^\\]*?)\])(.|\s)*?
ファイル内のブロックを見つけるために正規表現を使用しています。角括弧の開始から次の括弧の開始までのブロックを検討しています。正規表現の惑星でこの正規表現を試してみると、うまくいきません。指定されたファイルと一致しますが、最初の角括弧の終わりから次の角括弧の始まりまでのブロックである必要がある group(3) が null であることがわかります。この正規表現も使用してみまし(\[([^\\]+?)\]\s*$\s*(([^=]*)\s*=\s*([^$]*)\s*$)*?)
たが、これも機能しません。値のペア番号を 4 に固定して正規表現を使用しようとすると(\[(.+?)\]\s*?(.+?)\s*?=\s*?(.+?)\s*?(.+?)\s*?=\s*?(.+?)\s*?(.+?)\s*?=\s*?(.+?)\s*?(.+?)\s*?=\s*?(.+?)\n\s*?)
、うまくいきました。可変ケースで機能しない理由。
上記のブロックの例でブロックを抽出できる場合は、両方が必要です
var1 = "val1"
var2 = val2
または直接抽出する
var1 , "val1" var2 val2
これで質問が明確になることを願っています。