匹配注释的注释行

时间:2013-05-28 09:49:44

标签: regex regex-negation regex-lookarounds

在我的编辑器中搜索时,我想匹配注释行的注释(相当于多行模式,或者我相信?)。

正则表达式(?<!^)%.+?$正确匹配以下代码注释掉的第一行的注释(注释掉%后的所有内容),

 % foo = bar() % First comment

      % baz = qui() % Second commment

但我无法弄清楚如何匹配第二行,假设它是由未知数量的空格或制表符缩进。

我尝试过这样做失败了:((?<!^)%.+?$|(?<!^\s)%.+?$)

(我之前的正则表达式放在“or - 括号”中,重复并扩展以允许未知数量的空格;打破正则表达式,如+*运算符显然不允许在( s |之后) {{1}}。{/ p>

1 个答案:

答案 0 :(得分:2)

^\s*%[^%\n]*%(.*?)$应该完成这项工作。

说明:

^        # Start of a line
\s*      # 0 or more white spaces
%        # Just a regular % sign
[^%\n]*  # Matches 0 or more times anything that is not a % or a new line (\n)
%        # Just a regular % sign
(.*?)    # Captures everything after the second % (ungreedy)
$        # End of a line (because the previous in ungreedy it will not match items on the new line

这表明环顾四周并不总是解决某些问题的最佳方法。

我在Notepad ++

中对以下数据进行了测试
% foo = bar() % First comment
% test 
      % baz = qui() % Second commment
someFunction() 

用第一个捕获的组替换它会导致:(这表明只捕获了正确的部分)

 First comment
% test 
 Second commment
someFunction()