所以我在明文中收到一些xml(并且我不能使用DOM或JSON,因为显然我不被允许),我想剥离包含在某个元素中的所有元素并将它们放入一个数组中,在那里我可以删除各个段中的文本。 现在我习惯使用POSIX正则表达式,我将永远不会理解PCRE正则表达式背后的观点,也不会得到语法。
现在这里是我正在使用的代码:
var strResponse = objResponse.text;
var strRegex = new RegExp("<item>(.*?)<\/item>","i");
var arrMatches = "";
var match;
while (match = strRegex.exec(strResponse)) {
arrMatches[] = match[1];
}
我不知道为什么它不会找到与此代码匹配的任何内容,有人可以帮我解决这个问题并且可能详细说明它究竟是什么我一直在用PCRE语法做错了吗?
答案 0 :(得分:1)
如果这些标签位于不同的行中,则.
将与换行符不匹配,因此您的表达式将不匹配。这只是一个猜测,我不知道你的来源。
你可以尝试
var strRegex = new RegExp("<item>([\\s\\S]*?)<\\/item>","i");
[\\s\\S]
是一个字符类。包含所有空格和所有非空白字符。换行符由空格字符覆盖。
答案 1 :(得分:0)
完成此任务的最佳方法是使用以下内容,将其解析为正确的HTML并使用DOM解析器进行导航: Javascript function to parse HTML string into DOM? 正则表达式具有非常错误,并且通常不太适合解析HTML结构等不规则文本。