在字符串中查找所有出现的子字符串

时间:2013-03-23 00:06:53

标签: c#

我有一个文本文件,其中包含以下内容:

_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");
}

1 个答案:

答案 0 :(得分:1)

  1. 想一下可行的正则表达式
  2. 测试它。
  3. 如果不起作用,请修改并返回步骤2.
  4. 你有正则表达式: - )
  5. 为了帮助您入门:

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

    应该返回花括号内的各个行。