<COMPANY_NAME>AAAAAAAAA<TITLE>BBBBBBB<COMPANY_INDUSTRY>CCCCCCC<TYPE>DDDDDDD<SUBTYPE>EEEEEEEEE我要取到 AAAAAA  BBBB CCCCC DDDDD EEEEE 这些字符串
但是有个问题,就是
<COMPANY_NAME>
<TITLE>
<COMPANY_INDUSTRY>
<TYPE>
<SUBTYPE>
这几个标签,不一定哪个就不存在,也就是它有可能是这种情况:
<TITLE>BBBBBBB<COMPANY_INDUSTRY>CCCCCCC<TYPE>DDDDDDD<SUBTYPE>EEEEEEEEE
<COMPANY_NAME>AAAAAAAAA<COMPANY_INDUSTRY>CCCCCCC<TYPE>DDDDDDD<SUBTYPE>EEEEEEEEE
<COMPANY_NAME>AAAAAAAAA<TITLE>BBBBBBB<COMPANY_INDUSTRY>CCCCCCC<TYPE>DDDDDDD
等等情况
该如何拿到我要的字符串呢?
求高人帮忙.

解决方案 »

  1.   

    MatchCollection mc = Regex.Matches(yourStr,"(?<=<)[^<]+(?=<)")
    foreach(Match m in mc)
    {
        MessageBox.Show(m.Value);
    }
      

  2.   

    笔误,上面的错了一个符号。string yourStr = "<COMPANY_NAME>AAAAAAAAA<TITLE>BBBBBBB<COMPANY_INDUSTRY>CCCCCCC<TYPE>DDDDDDD<SUBTYPE>EEEEEEEEE";
    MatchCollection mc = Regex.Matches(yourStr, "(?<=>)[^<]+(?=<|$)");
    foreach (Match m in mc)
    {
        MessageBox.Show(m.Value);
    }
      

  3.   

    只要把标签后的内容取出就行,还是要同时取得对应关系?前者
                Regex reg = new Regex(@"<[^>]*>([^<>]+)");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Groups[1].Value + "\n";
                }后者
                Regex reg = new Regex(@"(?i)(?!$)(<COMPANY_NAME>(?<NAME>[^<>]*))?(<TITLE>(?<TITLE>[^<>]*))?(<COMPANY_INDUSTRY>(?<INDUSTRY>[^<>]*))?(<TYPE>(?<TYPE>[^<>]*))?(<SUBTYPE>(?<SUBTYPE>[^<>]*))?");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Groups["NAME"].Value + "\n";
                    richTextBox2.Text += m.Groups["TITLE"].Value + "\n";
                    richTextBox2.Text += m.Groups["INDUSTRY"].Value + "\n";
                    richTextBox2.Text += m.Groups["TYPE"].Value + "\n";
                    richTextBox2.Text += m.Groups["SUBTYPE"].Value + "\n";
                }