[急切求助]关于字符串处理的正则表达式!!!要求:把下面串中的中括号里面的单词(或单个字符)抽出;
[aaa,bbb][ccc]a11[dd e]kk[g,"hh ii"]
抽取规则为:中括号里面单词(或单个字符)以空格或者逗号分隔,
如碰到引号,引号内的空格或逗号不起作用。抽取结果为:
aaa
bbb
ccc
dd
e
g
hh ii
我只能抽取ccc,请高手帮忙啊,谢谢拉
(?<=\[)[a-zA-Z]{1,}(?=\])

解决方案 »

  1.   

    哈哈,我抽取不到CCC\[("?([\w\s]+)"?[,\s]"?([\w\s]+)"?)\]
      

  2.   

    try...string test = "[aaa,bbb][ccc]a11[dd e]kk[g,\"hh ii\"]";
    MatchCollection mc = Regex.Matches(test, @"(?<=\[[^\[\]]*"")[^""]*(?=""[^\[\]]*\])|(?<=\[[^\[\]]*)[a-z]+(?=[^\[\]]*\])", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  3.   


    Regex reg=new Regex(@"((?<=\[)[a-z]+?\b)|(\b[a-z]+?(?=\]))|((?<=\[[^\]]*?"")[a-z\s]+?(?=""))");
    string str="[aaa,bbb][ccc]a11[dd e]kk[g,""hh ii""]";
    string rtnStr="";
    foreach(Match m in reg.Matches(str))
    {
    rtnStr+=m.Value+"\r\n";
    }输出结果rtnStr:
    aaa
    bbb
    ccc
    dd
    e
    g
    hh ii