日期:2014-05-17  浏览次数:20976 次

求【正则表达式】能匹配不包含两个指定单词的行
现有一题目,要求是:
不开启多行模式,写一正则表达式,能匹配到所有不包含 /* 和 */ 的行。
我的思路是这样的:
用 ((?<!/\*|\*/).(?!/\*|\*/)) 来表示所有前面和后面不是/*或*/的任意字符。然后用
\n((?<!/\*|\*/).(?!/\*|\*/))\n来匹配,可结果完全不对,如图。
求指点,我到底该怎么写。

------解决方案--------------------
测试
string str = @"/*
------------------------
four lines comment
*/

/*
------------------------
five lines comment
*/";

            var result = Regex.Matches(str, @"(?<=^
------解决方案--------------------
\n)(?!(/\*
------解决方案--------------------
\*/).*?)[^\n]+?(?=\n
------解决方案--------------------
$)").OfType<Match>().Select(a => a.Value);
            /*
             *  [0] "------------------------" string
[1] "four lines comment" string
[2] "\r" string
[3] "------------------------" string
[4] "five lines comment" string

             */

------解决方案--------------------
匹配/\*\s*.*?\s*\*/
把其替换为空

string html="";
html=Regex.Replace(html,@"/\*\s*.*?\s*\*/","");
------解决方案--------------------
支持一下