1

文字列でグループをキャプチャしようとすると問題が発生します:

"type=gist\nYou need to gist this though\nbecause its awesome\nright now\n</code></p>\n\n<script src=\"https://gist.github.com/3931634.js\"> </script>\n\n\n<p><code>Not code</code></p>\n"

私の正規表現は現在次のようになっています:

/<code>([\s\S]*)<\/code>/

私の目標は、コードブラケットの間にすべてを入れることです。残念ながら、2番目の終了コードブラケットまで一致しています。終了コードブラケットが最初に出現するまで、コードブラケット内のすべてを一致させる方法はありますか?

4

2 に答える 2

4

正規表現のすべての繰り返し数量詞は、デフォルトで貪欲です(できるだけ多くの文字に一致します)。*次のように、貪欲にしないでください。

/<code>([\s\S]*?)<\/code>/

ただし、代わりにDOMパーサーの使用を検討してください。正規表現は、HTMLを解析するための適切なツールではありません。

于 2012-10-22T18:38:10.360 に答える
0

そして、私はちょうど複数の部分を通過するために、

String.scan( /<code>(.*?)<\/code>/ ){
  puts $1
}

これは、発生するすべてのコードを調べるための非常に優れた方法ですが、適切なパーサーを取得する方が優れています...

于 2012-10-22T21:20:15.780 に答える