2

次のような内容を含むテキスト ファイルがあります。

_vehicle_12 = objNull;
if (true) then
{
  _this = createVehicle ["Land_Mil_Guardhouse", [13741.654, 2926.7075, 3.8146973e-006], [], 0, "CAN_COLLIDE"];
  _vehicle_12 = _this;
  _this setDir -92.635818;
  _this setPos [13741.654, 2926.7075, 3.8146973e-006];
};

{との間のすべての出現箇所を見つけて};、次の文字列を割り当てたい:

string direction = "_this setDir" value, in example _vehicle_12 it would mean that:
string direction = "-92.635818";

string position = "_this setPos" value, in example _vehicle_12 it would be:
string position = "[13741.654, 2926.7075, 3.8146973e-006]";

私はこれらのタイプの複数のオカレンスを持っており、発生するたびに{ };方向と位置を設定し、次のオカレンスに移動するための最良の方法を見つけたいと考えています。

次のコードは、文字列 (ファイルを大きな文字列で保持する) を読み取ることができ、最初の出現は問題なく検出されますが、{ と } のすべての出現を検出するように適応させたいと考えています。

string alltext = File.ReadAllText(@file);
string re1 = ".*?"; // Non-greedy match on filler
string re2 = "(\\{.*?\\})"; // Curly Braces 1

Regex r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = r.Match(alltext);
if (m.Success)
{
    String cbraces1 = m.Groups[1].ToString();
    MessageBox.Show("Found vehicle: " + cbraces1.ToString() + "\n");
}
4

1 に答える 1

1
  1. うまくいくかもしれない正規表現を考えてください
  2. 試して。
  3. うまくいかない場合は、修正して手順 2 に戻ります。
  4. あなたは正規表現を持っています:-)

開始するには:

\{\n([0-z\[\]" ,-\.=]+;\n)+\}

中括弧内の個々の行を返す必要があります。

于 2013-03-23T00:35:49.490 に答える