2
我需要一个Perl正则表达式来删除行尾注释。我觉得我已经为此搜索并找不到正确的东西。下面是详细信息:删除行尾注释除非报价
EOL注释用英镑符号(#)表示
任何东西都可以用竖线被引用(|)
所以下面有一个评论:
foo bar #baz
但以下不会:
foo |quoted###with bars|
下面有一个COMME NT和包含批注文字报价:
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注释但忽略引用的注释字符吗?
几乎...不包括多线事情。 –
@NateGlenn:当然可以;你尝试过吗?当我在'abc | def#ghi'上使用它时,再加上一个换行符,再加上'klm | nop#qrs',它只会剥离'#qrs',因为'#ghi'在多行内| | | '片段。你看到不同的东西吗? – ruakh
就是你!谢谢。 –