0

我将以下 JavaScript 程序保存在一个文件中pre.js

var pre = readFile("method-help.html");
RegExp.multiline = true;
print(/<pre>((?:.|\s)+)<\/pre>/.exec(pre)[1]);

的内容method-help.html就是http://api.stackoverflow.com/1.0/help/method?method=answers/%7bid%7d上的页面。我想要做的是在标签之间获取 JSON 代码pre。但是,当我在 Rhino 中运行该程序时,什么都没有打印出来,程序也没有终止。我使用的命令是:

java -jar js.jar pre.js

我的 Rhino 版本是 1_7R2。

4

1 回答 1

2

它似乎没有终止的原因可能是由于重叠导致的灾难性回溯.\s它最终会结束,但可能会很长时间)。这是一个正确、快速的版本:

var pre = readFile("method-help.html");
print(/<pre>([\s\S]*?)<\/pre>/.exec(pre)[1])

你不需要multiline。这只会影响您未使用的^and的含义。$但是,我们确实使用\s\S来表示所有字符(包括换行符等)。我们也*?用来表示零个或多个字符,非贪婪。问号(非贪婪)在这里无关紧要,但如果有多个pre块则它会。

于 2010-07-11T06:24:14.097 回答