Control-M/* 
dsfsdsdfdfs
dfdsfsd test t
dsf*/
//l;;l';l';
mkjkj
//dsfsdfdsfdfsdfsdsfdsf test dsffdsa
test sddsfsdf  dfs test 
正则表达式,找到整字匹配test:    
\btest\b
会把/* */或// 里的注释内容都找出来
怎么让正则表达式 不找出在注释里的词语,
如果用JAVA或javascript能识别的正则就更好了

解决方案 »

  1.   

    试试这个:
    // 去除注释:
    s = Regex.Replace(s, @"(?s)/\*.*?\*/|//[^\n]*", "");
      

  2.   

    up降低难度:只不找出//后面的test,这个可以实现吗?
    .net的正则不是很强大吗?
      

  3.   

    //获得所有的注视
    MatchCollection mc = Regex.Matches(c_code,@"/\*[^*]*\*/|//[^\r\n]*");
    //删除所有注视
    string non_note_code = Regex.Replace(c_code,@"/\*[^*]*\*/|//[^\r\n]*",string.Empty);
      

  4.   

    晕,没看题目,你要非注视里的test?
    try this:
    MatchCollection mc = Regex.Matches(c_code,@"(?<!/\*[^*]*(?!\*/))(?<!(^|\r\n)[^/]*//.*)\btest\b");
    foreach(Match m in mc)
    {
        Console.WriteLine(m.Value);
    }
      

  5.   

    佩服!
    但有个特殊情况没有考虑:// */此行不在注释内 test // /* test 
      

  6.   

    sorry,我贴错了,:)
    // /* test 
    此行不在注释内 test   
    // */太感谢您了
      

  7.   

    楼主可以看看正则表达式以外的方法http://zh.wikipedia.org/zh/%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA
      

  8.   

    有点难度。要是先去掉注释,再找容易点,带着注释,分析/**/的情况比较多。符合8楼要求的正则如下:
    (?mn)^(?![^/\s]*//).*?\btest\b.*$但是带有/**/的还是去掉注释会容易点。
      

  9.   

    虽然应经结贴,但还要给出结果,经过大量测试,正确无比:(?imsn)(/\*.*?\*/)((?!/\*).)*?(?<=^[^/]*((?!//).)*?)(?<find>test)|(?-s)(?<!^.*?//.*?)(?<find>test)
    测试用文本:
    Contesttrol-M/* test
    test //ds/*fsdsdfdfs
    test dfdsfsd test*/t t
    dsf*/
    test
    /* test 
    ..
    */
    mkjkj
    got//testog test//testdsfsdfdsfdfsdfsdsfdsf test dsffdsa
    uyt test sdds test//testdf  dfs test 33
    test
      

  10.   

    谢谢sxldfang,太早结贴了,没给你分,不好意思