1,978
社区成员
发帖
与我相关
我的任务
分享
//正则:\d+(?<name>[A-Z])+\d+
//匹配:123AC321
//注意分组 name 后面可重复1次以上
//匹配结果 分组name = C
//要求,应该让name分组 返回一个集合 [A,C]
//题目如此,请大神解答。(使用递归或平衡组都可)。
//大神有啥好的解决方法请留言。(大家不要扣字眼,比如说匹配 AC ,然后Split)
//分不多
var arr = [],
s = "123AC321",
re = /\d+([A-Z])+\d+/g,
item;
while (item = re.exec(s))
arr.push(item[1]);
alert(arr); //C
var arr = [],
s = "123AC321",
re = /\d+([A-Z]+)\d+/g,
item;
while (item = re.exec(s))
arr.push(item[1]);
alert(arr); //AC
// \加转义符
Regex reg = new Regex(@"^([""'])[^\\1]+?\1$");
void Main()
{
Regex reg=new Regex(@"^([""'])[^\1]+?\1$");
string[] test=
{
"'a\"s\\1d'",
"'a\"\\s1d'",
"'a\"sd'",
"\"a'sd\""
};
foreach(string s in test)
Console.WriteLine("{0}:\t{1}",s,reg.IsMatch(s));
/*
'a"s\1d': True 如果此处是匹配\,1外的字符,那此处不应该是true
'a"\s1d': True
'a"sd': True
"a'sd": True
*/
}
string str="123AC321";
Regex reg=new Regex(@"\d+(?<name>[A-Z])+\d+");
Match m =reg.Match(str);
string[] result=m.Groups["name"].Captures.Cast<Capture>().Select(c=>c.Value).ToArray();