答えて
私は非常にちょうどコメントのように、パーサを使用することをお勧めしますが、ちょうど楽しみのためならば - 私の頭の上から、あなたはルビーを使用して、このような何かを行うことができ、あなたはすでに(これは非常に荒く、ちょうど可能なガイドです念頭に置いておく - prolly箱から出して動作しません)ファイルからコンテンツを取得する方法を知っていると仮定すると:
def one_liner_comment string
string.match /\/\*.*\*\//
end
def multi_liner_comment_start string
# if always checking for one_liner_comment in code would not need first !one_...
!one_liner_comment(string) && string.match(/\/\*/)
end
def multi_liner_comment_end string
# if always checking for one_liner_comment in code would not need first !one_...
!one_liner_comment(string) && string.match(/\*\//)
end
次に、あなただけのどこかを決定するために
if one_liner(string)
inline = true
elsif multi_liner_comment_start(string)
started = true
elsif started && multi_liner_comment_end(string)
ended = true
end
ここからあなたのコメントで何でもしてください。
if inline
# do whatever you want
one_liner = false
elsif started && !ended
# do whatever you want -> append or create new string
elsif started && ended
# do whatever you want -> append to string
started = false
ended = false
end
、それはまた、クリーンアップすることができ確かに...
は一行と複数行のブロックコメントをキャプチャする
\/\*(\*(?!\/)|[^*])*\*\/
を使用してみてください。これは、どちらかのいずれかの数字が続く/*
を検索:
/
- 任意の文字が続かない
*
を*
を除いた後、クロージング*/
再び。
別のブランチの空白文字を一致させる必要はありません。 '[^ * /]'はそれらをカバーしています。すべての '| \ s'はあなたを[破滅的なバックトラッキング](http://www.regular-expressions.info/catastrophic.html)まで開きます。また、そこからスラッシュを取得する必要があります、またはあなたの正規表現は、スラッシュ内のコメントに一致することができません。 –
あなたの提案に変更されました(OPによると、スラッシュによるコメントは問題ではないようです) – Campfire
なぜ/ /**(.(?!\*/))*\*/ 'なのですか?最初に '/ *'をつけた後に '* /'と '* /'を続けて入力しないでください。 – zzh1996
- 1. 正規表現の後に値を見つけるための正規表現
- 2. 正規表現を見つけるための正規表現ですか?
- 3. キーの値を見つけるための正規表現
- 4. 空のアンカータグを見つけるための正規表現
- 5. データを見つけるためのSplunkの正規表現
- 6. フレーズを見つけるためのJavaのユーザー正規表現
- 7. Hrefの値を見つけるための正規表現
- 8. リンクを見つけるためのPHP正規表現
- 9. サブ文字列を見つけるための正規表現
- 10. 価格を見つけるための正規表現
- 11. 正規表現を見つける正規表現
- 12. &&を見つける正規表現&&
- 13. 正規表現を見つける '\ n'
- 14. .htaccess正規表現の最後の一致を見つけるための正規表現
- 15. 最初に出現する正規表現を見つける正規表現
- 16. Cスタイルのブロックコメントに* /を含める
- 17. C#でコードブロックを見つける正規表現
- 18. 名前の桁のファイルを見つけるためのバッチファイルの正規表現
- 19. 連続したIPアドレスを見つけるための正規表現
- 20. コード内のすべてのメソッドを見つけるための正規表現
- 21. xcodeで正規表現を見つけて置き換える正規表現...?
- 22. ファイル内のphp関数を見つけるためのpython正規表現
- 23. Pythonディレクトリ内の最新ファイルを見つけるための正規表現
- 24. 文字列内のリンク全体を見つけるための正規表現
- 25. 文字列内の辞書を見つけるための正規表現
- 26. $ {...}のようなパターンをjavaの正規表現で見つけるために
- 27. 文字列中のホスト名を見つけるための正規表現
- 28. オーバーラップマッチのためのC++正規表現
- 29. マッチしない括弧を見つけるための正規表現
- 30. 動的idを見つけるためのgoutte/crawler正規表現
'/ *'が同じ行にあり、 '//'の後にあると、コメントを開始しません。 – Patashu
いいえ、私はそのような状況に対処する必要はありません – linquize
正規表現のほかに、すべてを出そうと思えば、C(または何でも)の言語文法で言語パーサーを使うことができます。例はyacc、javacc、antlrです。 –