我有一个字符串
String value ="[xasx1xx]Data1[/xasx1xx][xx22x]Data2[/xx22x][1x22aaaaax]Data3[/1x22aaaaax]";
我想在关键字"[xxxxx]"
和"[xxxxx]"
之间拆分字符串[xxxxx]
是随机创建的。所以我输出像
非常感谢任何帮助。
答案 0 :(得分:3)
您可以使用正则表达式Lookaround(Zero length assertion)按照您的期望获取匹配的数据。要从上述数据中获取数据,您可以通过以下方式使用positive lookahead
和postive 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