正規表現の各行で別々に実行する場合は、このようなものが動作するはずです。コメント自体(存在する場合)は、3番目のキャプチャグループになります。
/^((\\.)|[^\\\#])*\#(.*)/
(\\.)
は[^\#]
は、任意のは、彼らがコメントする前に、行全体が一致し*
数量詞と一緒に、非ハッシュ文字を非スラッシュ一致し、エスケープ文字に一致します。正規表現の残りの部分はコメントマーカーを検出し、テキストを抽出します。
\A
(?>
\\. # Capture an escaped character
| # OR
\[\^? # a character class
(?:\\.|[^\]])* # which may also contain escaped characters
\]
| # OR
\(\?(?# inline comment!)\#
(?<Comment>[^)]*)
\)
| # OR
\#(?<Comment>.*$) # a common comment!
| # OR
[^\[\\#] # capture any regular character - not # or [
)*
\z
は幸いにも、.NETの各キャプチャグループはそのキャプチャのすべてを覚えて、ちょうど最後のではない:ここでは
ハッシュは、文字クラスにすることもできます: '[#]'。あなたが解析するための楽しい正規表現があります: '' [#[b \ [\]] \#] \\# '(ab#)\) – Kobi
@ Kobi:lol、あなたは私を紡ぎ出しています。私はホワイトベルトの正規表現の男です。 –
ここに私の前のコメント(それがパスする)からのトリックの正規表現との私の正規表現は:http://ideone.com/4w5Q0 – Kobi