Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите с позиционными проверки в регулярных выражениях (https://javascript.ru/forum/server/9543-pomogite-s-pozicionnymi-proverki-v-regulyarnykh-vyrazheniyakh.html)

Papa 23.05.2010 19:42

Помогите с позиционными проверки в регулярных выражениях
 
Здраствуйте, составлял регулярное выражение для парсинга xml документа, структура такая:
<item>
	первый тег
</item>
<item>
	второй тег
</item>

Паттерн такой:
preg_match_all('/(?<=<item>).+(?=<\/item>)/s', $str, $matches);
так вот надо найти то что внутри этих тегов и поместить в массив результатов. Это регулярное выражение выбирает все от первого до последнего тега <item>, но мне нужно чтобы оно не пропускало внутренние теги, а оно пропускает и включает в результат. Какой тогда смысл от позиционной проверки (?=<\/item>) если можно просто написать этот тег за искомой строкой). Можно ли пояснить как работать с такими проверками, как составить регулярное в моем случае или дать ссылку почитать, зарнее спасибо) Можно конечно воспользоваться SimpleXML или ф-иями php но нужны именно регулярки.

Riim 23.05.2010 19:53

Одними регулярками здесь не обойтись, нужно писать конечный автомат. Была уже подобная тема, попробуйте поискать.
туплю, я думал речь про внутренние теги.

exec 23.05.2010 19:59

preg_match_all('/(?<=<item>).+?(?=<\/item>)/s', $str, $matches);

Papa 23.05.2010 20:23

Ух ты а как это?, +? а можно пояснить как вопросительный знак помог, мысли не было его использовать даже

exec 23.05.2010 20:41

Это называется "ленивый квантификатор"


Часовой пояс GMT +3, время: 19:59.