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>/

我的目标是将所有内容都放在代码括号之间。不幸的是,它匹配到第二个结束代码括号有没有办法匹配代码括号内的所有内容,直到第一次出现结束代码括号?

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 回答