如何按特定模式拆分字符串?

时间:2017-01-25 02:30:03

标签: c#

我有一个字符串

String value ="[xasx1xx]Data1[/xasx1xx][xx22x]Data2[/xx22x][1x22aaaaax]Data3[/1x22aaaaax]";

我想在关键字"[xxxxx]""[xxxxx]"之间拆分字符串[xxxxx]是随机创建的。所以我输出像

  • DATA1
  • DATA2
  • DATA3

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用正则表达式Lookaround(Zero length assertion)按照您的期望获取匹配的数据。要从上述数据中获取数据,您可以通过以下方式使用positive lookaheadpostive lookbehind

(?<=\]).*?(?=\[)

(?<=\])positive lookbehind在方括号(]后结束时查找数据

(?=\[)positive lookahead在方括号开始之前查找数据([)

C#中,您可以使用上述模式使用Regex库提取匹配数据。

string input = "[xasx1xx]Data1[/xasx1xx][xx22x]Data2[/xx22x][1x22aaaaax]Data3[/1x22aaaaax]";
MatchCollection matchCollection = Regex.Matches(input, @"(?<=\]).*?(?=\[)");
var list = matchCollection.Cast<Match>().Where(x => !string.IsNullOrWhiteSpace(x.Value))
               .Select(x=>x.Value); // list contains matching data without empty entry