Регулярка. "Жадность"

Marika

Новичок
Регулярка. "Жадность"

Есть следующая строка:
PHP:
<input name=xxx value=xxx>1<input name=yyy value=yyy>2<input name=zzz value=zzz>2
Хочу с набора этих инпутов вытянуть только те, после которых стоит цифра 2.
В данном случае это будут: <input name=yyy value=yyy>2 и <input name=zzz value=zzz>2

Когда ищу по такому регекспу
PHP:
<input.*?>
, то находит все инпуты: <input name=xxx value=xxx>, <input name=yyy value=yyy>, <input name=zzz value=zzz>.

НО мне нужны только те, после которых стоит двойка. Поэтому добавляю к регекспу цифру 2:
PHP:
<input.*?>2
и вот, что оно находит:
<input name=xxx value=xxx>1<input name=yyy value=yyy>2 и <input name=zzz value=zzz>2. То есть не то, что нужно.
Вот и не могу понять, в чем проблема.
 

Baranov_Dron

Новичок
попробуй так
$pattern = '!<input[^>]*>2!si';
зы пишу прямо в форме форума, и к сожалению не тестил её :(

-~{}~ 07.01.09 17:50:

По поводу "жадности" в вашей регулярке, вот код у вас что-то вроде этого:
PHP:
<?php
$test = '<input name=xxx value=xxx>1<input name=yyy value=yyy>2<input name=zzz value=zzz>2';
preg_match_all('!<input.*?>2!', $test, $res);
print_r($res);
?>
Результат
PHP:
Array
(
    [0] => Array
        (
            [0] => <input name=xxx value=xxx>1<input name=yyy value=yyy>2
            [1] => <input name=zzz value=zzz>2
        )

)
Почему такой - угадайте сами)
*?>2 - означает идём до первой КОМБИНАЦИИ >2, и не останавливаемся не на просто >, и не на просто 2, только на комбинации >2

-~{}~ 07.01.09 17:51:

ЗЫ свою регулярку протестил) работает, хотя я особо и не совневался)))
 
Сверху