私はScalaアプリに取り組んでおり、正規表現を使用してファイルを解析しようとしています。ファイル形式は次のようなものです。
actions{
ACTION_NAME=[ELEMENT,ANOTHER_ELEMENT,SOMETHING_ELSE]
ANOTHER_ACTION=[SOMETHING_HERE,ANOTHER_ONE]
}
ここで、中括弧内の要素の量は動的です。
これらの行をタプルに繰り返し一致させたいので(例:ACTION_NAME | ELEMENT、ANOTHER_ELEMENT、SOMETHING_ELSE)、次の正規表現を使用して一致させました。
actions\{(?:[\s\n]*([A-Z_]+)=\[([A-Z_,]*)\][\s\n]*)*\}
一致は正常に機能しますが、私のマッチャーグループには、もちろん最後のキーと値のみが含まれています。マッチャーを作成して繰り返しを繰り返し、ファイル内のすべての一致をキー、値、キー、値、キー、値のイテレーターとして返すにはどうすればよいですか...
ありがとう
あなたはワンステップでそれを行うことはできません。Scalaは、繰り返されるグループ(*)の一致インスタンスの表示をサポートしていません。
それを分割します:
actions\{([^}]*)\}
入力全体と照合します。試合ごとに
(\w+)=\[([^\]]*)\]
それと一致します。試合ごとに
(*)それはJavaがそれをサポートしていないからです。他の正規表現エンジン、最も目立つのは.NETのもので、このような機能を提供します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加