例子1,
<!-- #xxx-->  //注意xxx可变[#"aa","bb",111]<!-- xxx#-->
----------------------------
例子2
[#"aa","bb",111]
=============================
要求能匹配例子2,但不能匹配例子1的.
就是如果表达式在查询时,输入字符串(例子1),不匹配;输入字符串(例子2),匹配

解决方案 »

  1.   

    例子1,补充
    <!-- #xxx-->  //注意xxx可变
    <tabl...
    <td>....
    ....
    [#"aa","bb",111]
    ....
    ....
    <!-- xxx#--> 
      

  2.   

    例2是例1的真子集,如果能匹配2而不匹配1,就只能加 开始和结束 符了. 
     string pat = @"^[#"aa","bb",111]$";
      

  3.   

    就是输入例子2,能找到[#"aa","bb",111],输入例子1,不能找到[#"aa","bb",111],这样的正则表达式如何写.
      

  4.   

    他意思好像是说,前后有xxx那个注释的[#"aa","bb",111]就不要选...<!-- #xxx-->[#"aa","bb",111]<!-- xxx#--> ... 这个地 不要
    ....dsafsafdsa[#"aa","bb",111]fasdfsafsad... 这个地 要...有点困惑...<!-- #xxx-->...sadfsafsafsa[#"aa","bb",111]dfsfsaf...<!-- xxx#--> ... 这个地 要不要
      

  5.   

    这样也不可以啊,如果
    例子2
    <td>....
    ....
    [#"aa","bb",111]</td> 
    .....
    ....
    就不能匹配了
      

  6.   


    是的,只要有<!-- xxx#--> <!-- #xxx-->括住的都不要选
      

  7.   

    string s="<!-- #xxx-->[#"aa","bb",111] <!-- xxx#-->";
    if(Regex.IsMatch(s,"^\<(\w)*\>$"))
    {
    Console.WriteLine("这个是不要的!!");
    }
    试试
      

  8.   

    这是我写的
    "\<!--#(?<Name>[#\w]*)--\>(?<Template>.*?)\<!--\k<Name>#--\>""\[#""(?<Name>[\w]*)"",""(?<Format>.*?)""(?<Length>[,\d]*)#\]"要怎么调整?
      

  9.   

    试试这个:
    (?<!\<!.*?\>\s*)\[\#[^\]]+\](?!\s*\<!.*?\>)
      

  10.   


    string str = //测试字串
                "... <!-- #xxx-->[#\"aa0\",\"bb\",111] <!-- xxx#--> ..." +
                "....dsafsafdsa[#\"aa1\",\"bb\",111]fasdfsafsad... " +
                "....dsafsafdsa[#\"aa2\",\"bb\",111]fasdfsafsad... " +
                "... <!-- #xxx-->[#\"aa4\",\"bb\",111] <!-- xxx#--> ..." +
                "....dsafsafdsa[#\"aa5\",\"bb\",111]fasdfsafsad... " +
                "... <!-- #xxx-->...sadfsafsafsa[#\"aa6\",\"bb\",111]dfsfsaf... <!-- xxx#--> ... ";
            //下面是lz需求的匹配正则式。<\!\-\-\s\#.*?\#\-\->用来匹配注释 如果有特殊需求简单改动一下即可 
             //注意用“|”做了分组。匹配的时候,取索引为2的组。
             //分组索引分配是:全字段匹配为0,然后按“|”分割,从左向右1,2,3,4....
            string reg = @"(<\!\-\-\s\#.*?\#\-\->)|(\[.*?\])"; 
            //设置要取的分组索引
            int groupIndex = 2;        Regex result = new Regex(reg, RegexOptions.Multiline);        string adder = "";
            foreach (Match m in result.Matches(str))
            {
                adder += String.Format("{0}\r\n", m.Groups[groupIndex].Value); /*这里Groups是关键*/ 
            }        //adder是最终结果
      

  11.   

    输出结果是
    [#"aa1","bb",111]
    [#"aa2","bb",111][#"aa5","bb",111]
      

  12.   

    =====================================================
    string reg = @"(<\!\-\-\s\#.*?\#\-\->)|(\[.*?\])";
    根据你这个分组,如果我本来就有
    str a1 = @"\<!--#(?<Name>[#\w]*)--\>(?<Template>.*?)\<!--\k<Name>#--\>";
    string a2 = @"\[#""(?<Name>[\w]*)"",""(?<Format>.*?)""(?<Length>[,\d]*)#\]";根据你的代码改写 "(" + a1 + ")|(" + a2 + ")"; 要怎样获取?