Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярка для выдергивания id (https://javascript.ru/forum/misc/22536-regulyarka-dlya-vydergivaniya-id.html)

greatilya 24.10.2011 07:58

Регулярка для выдергивания id
 
Правда код на php, но особой разницы нет.
У меня имеется строка s:
$s='<h3 class="part">Что это?<?=$this->lang[5];?></h3><h3 class="part">Что это?<?=$this->lang[12];?></h3>';

Необходимо из элементов <?=$this->lang[5];?> вытащить id, в данном случае 5.
Пишу следующую регулярку:
preg_match_all("/(?<=\<\?=$this->lang\[)\d*(?=\])/i", $s, $matches);

На выходе $matches[0] выдает пустой массив, а хотелось бы array(5,12).
Подскажите, где я накосячил с регуляркой?
Заранее спасибо.

B@rmaley.e><e 24.10.2011 09:18

1. Вот < в регулярке Вы заэкранировали, а $ почему-то не стали. А ведь первое не является управляющим символом регэкспов, в отличие от второго.

greatilya 24.10.2011 11:31

B@rmaley.e><e,
заменил на
preg_match_all("/(?<=<\?=\$this->lang\[)\d*(?=\])/i", $s, $matches);
результат остался прежним, не находит. Где я еще мог закосячиться?
Если имеет значение, длина строки $s сопоставима с длиной html кода страницы, в данный момент порядка 15000 символов.

UPD:
Работает данный вариант:
preg_match_all("/(?<=this->lang\[)\d*(?=\])/i", $s, $matches)


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