Не могу использовать регулярные выражения javascript, чтобы получить все между тегами html / xml - PullRequest
0 голосов
/ 06 июля 2011

Таким образом, я получаю некоторый 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?

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Если эти теги находятся в разных строках, . не будет соответствовать символам новой строки и поэтому ваше выражение не будет совпадать. Это всего лишь предположение, я не знаю вашего источника.

Вы можете попробовать

var strRegex = new RegExp("<item>([\\s\\S]*?)<\\/item>","i");

[\\s\\S] - это класс символов. содержащий все пробельные символы и все непробельные символы. разрывы строк закрываются пробельными символами.

0 голосов
/ 11 февраля 2013

Лучший способ выполнить эту задачу - использовать следующее, чтобы проанализировать его как правильный HTML и перемещаться по нему с помощью анализатора DOM: Функция Javascript для разбора HTML-строки в DOM? В Regex это связано с тем, что он очень неисправен и, как правило, не очень хорош для анализа неправильного текста, такого как структура HTML.

...