2

行末コメントを削除するには、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コメントを削除するが、引用符で囲まれたコメント文字を無視する正規表現を提供できる人はいますか?

4

1 に答える 1

3

1つのアプローチ:

s/(\|[^|]*\|)|#.*/$1||''/eg

これは|...|(を含む|...#...|)をそれ自体に置き換え#...、何も置き換えません。

于 2012-10-05T01:30:32.173 に答える