Как написать регулярное выражение для всего, что находится между X и Y, для использования с preg_replace

Я хочу взять переменную с именем $encoded_str и удалить cd1, CD1 и все, что находится между первым «l» и последним пробелом. Так, например, "lp6 id4 STRINGcd1" вернет "STRING".

Сейчас я использую PHP 4, поэтому я не могу использовать str_ireplace, у меня есть это:

$encoded_str=str_replace('CD1','',$encoded_str);
$encoded_str=str_replace('cd1','',$encoded_str);
$encoded_str=preg_replace('X','',$encoded_str);

У меня есть RTM для preg_replace, но я немного запутался. Чем мне заменить X и можете ли вы предложить достойный вводной курс по написанию регулярных выражений?


person pg.    schedule 03.06.2010    source источник
comment
Это будет зависеть от того, что может содержать STRING. Это буквенно-цифровой? Просто буквы? Какие-то специальные символы?   -  person eykanal    schedule 03.06.2010


Ответы (1)


$encoded_str=preg_replace('/l.*(?<=\s)/','',$encoded_str);

Приведенное выше регулярное выражение будет соответствовать чему угодно от первого l в строке до последнего пробела. Он использует положительный просмотр назад, чтобы сопоставить позицию пробельного символа в качестве конечной точки для .*, потребляющего первую часть строки. Так как .* является жадным, просмотр назад будет соответствовать последнему пробелу, который может.

Что касается ссылки, эти страницы великолепны:

http://www.regular-expressions.info/tutorial.html

person Amber    schedule 03.06.2010