我需要一个 Perl 正则表达式来删除行尾注释。我觉得我已经用谷歌搜索了这个,但找不到合适的东西。以下是详细信息:
EOL 注释使用井号 (#) 表示
可以使用竖线 (|) 引用任何内容
所以下面有评论:
foo bar #baz
但以下没有:
foo |quoted###with bars|
下面有一个注释和一个包含注释字符的引用:
foo |quoted###with bars| #comment here
我尝试的第一件事是s/#(?=[^|]*$).*$//
,不幸的是它删除了引用的英镑。下一个不起作用的是/#(?=[^|]*$).*$//
,因为它在多行引号上失败,如下所示:
foo |quote begins here ##still going
##and it's still going| #this is a quote, though.
我觉得我可以从perlfaq6中的 C/C++ 注释的正则表达式中收集到一些东西,但是对于我来说只获取我需要的东西(不需要多行注释;)太复杂了。
任何人都可以提供一个删除 EOL 评论但忽略引用的评论字符的正则表达式吗?