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

怎么用正则表达式过滤注释?

RT。

例如:有一段代码:
  EMU0 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  EMU1 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  RSV0 : in bit;
怎样用正则把注释过滤掉,其他的输出。注释就是"--"符号后边的!
 

------解决方案--------------------
C# code

            string pattern = @"(?is)(?:--).*?(?:\n)";
            string replacement = "\n";
            string input = @"EMU0 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  EMU1 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  RSV0 : in bit;";
            input = Regex.Replace(input, pattern, replacement);
            Console.WriteLine(input);
/*
EMU0 : in bit; 
  EMU1 : in bit;
  RSV0 : in bit;
*/

------解决方案--------------------
不考虑包在""中的--的话,这样就可以了
C# code
string test = @"EMU0 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  EMU1 : in bit; -- must be type in for compliance enable
  -- non-JTAG type is inout
  RSV0 : in bit;";
Regex reg = new Regex(@"--.*");
string result = reg.Replace(test, "");
richTextBox2.Text = result;

------解决方案--------------------
单行注释是以换行为结束标志的,上述都是匹配行内的,不会换行匹配