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
就是你!謝謝。 –