第一种输出形式:
string text = "a[bc]def[ghi]jklmn";
var regex = new Regex(@"(\w)\[(\w{2})\](\w{3})\[(\w{3})\](\w{5})");
var match = regex.Match(text);
string[] strArray = new string[match.Groups.Count-1];
for (int i = 1; i < match.Groups.Count; i++)
{
strArray[i-1] = match.Groups[i].Value;
}
第二种输出形式:
string text = "a[bc]def[ghi]jklmn";
var regex = new Regex(@"(\w)(\[\w{2}\])(\w{3})(\[\w{3}\])(\w{5})");
var match = regex.Match(text);
string[] strArray = new string[match.Groups.Count-1];
for (int i = 1; i < match.Groups.Count; i++)
{
strArray[i-1] = match.Groups[i].Value;
}
两段代码只是正则表达式稍有不同,将()移到了[]外面。
这个貌似就只能用split 吧?
string str = "a[bc]def[ghi]jklmn";
string[] temp = str.Split('[', ']');
这样不是挺简单的吗
List<string> b = new List<string>();
string temp = "";
foreach (var o in test)
{
if (o != '[' && o != ']')
{
temp += o;
if (o == test[test.Length - 1])
{
b.Add(temp);
}
}
else
{
b.Add(temp);
temp = "";
}
}
b就是你要的
如果有括号用:
List<string> b = new List<string>();
string temp = "";
foreach (var o in test)
{
if (o != '[' && o != ']')
{
temp += o;
if (o == test[test.Length - 1])
{
b.Add(temp);
}
}
else
{
if (o == ']')
{
temp += o;
}
b.Add(temp);
temp = "";
if (o == '[')
{
temp = o + temp;
}
}
}
b就是带括号的
思路不错,有空我要跟你学习一下。。。但是不是我想要的结果,我想用正则表达式怎么匹配
为什么不能用split方法?
split方法是我想出来,我只是想有没有其他好的方法。。可以学习一下
跟二楼想法一致