从大括号内提取分隔列表

时间:2017-01-06 01:07:12

标签: c# arrays regex

我有一个看起来像这样的文件的字符串输入,我创建了一个正则表达式,成功地提取了这个:

 addresses { 1.1.1.1;
  2.2.2.2;
  3.3.3.3;
 }

任何一行都可以有任意的空格。我想获得List<string>地址值:

s[0] = "1.1.1.1"
s[1] = "2.2.2.2"
etc...

任何人都可以帮助我使用相关的C#吗?我正处于我的正则表达式技能的极限。

2 个答案:

答案 0 :(得分:1)

你需要获得花括号的内容(使用正则表达式或仅使用IndexOf)并将其拆分为;

var input = @"addresses { 1.1.1.1; 2.2.2.2; 3.3.3.3; }";
var regex = new Regex(@"[^{]+{([^}]+)}", RegexOptions.Multiline);
var addresses = regex.Match(input).Groups[1].Value
    .Split(';')
    .Select(s => s.Trim())
    .Where(s => !String.IsNullOrWhiteSpace(s))
    .ToList();

答案 1 :(得分:0)

可能有多种方法可以从字符串中提取值。这可能就是其中之一。

string input = @"addresses { 1.1.1.1; 2.2.2.2; 3.3.3.3; }";
string formattedInput = Regex.Replace(input, @"[A-Za-z*{}]", "");
List<string> InpList = formattedInput.Split(new char[] { ' ', ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();