Парсинг и регулярные выражения пример обязательное отсутсвие части строки

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

В ситуации, когда необходимо, чтобы заданная часть текста, непременно отсутствовала для того чтобы удовлетворяла шаблону поиска, нужно использовать конструкцию:

(?<!слово)

Рассмотрим наглядный пример. Допустим есть два адреса URL. Адреса похожи , но отличаются определенной закономерностью:

http://weblomaster.ru/img/min_photo.jpg

и

http://weblomaster.ru/img/AfR_photo.jpg

AfR - при этом заранее неизвестен и может меняться как угодно. В то время как индекс min это то, что мы хотели бы исключить.

При таких условиях, понятно, что маска вида :

"#http://weblomaster.ru/img/([A-Za-z0-9]*)_photo.jpg#i"

не подойдёт.
В этом случае используем шаблон:

"#http://weblomaster.ru/img/([A-Za-z0-9]*)(?<!min)_photo.jpg#i"

Полноценный пример с парсингом (выделением) любого индекса не равного min_ , состоящего при-этом из цифр и букв латинского алфавита, посредством функции preg_match() показан ниже:

<?
$url_array = array("min_photo", "AfR_photo","A78gh_photo");
$mask = "#^(?<!min)_photo#i";
foreach($url_array as $val){
if(preg_match("#([a-zA-Z0-9]*)(?<!min)_photo#i",$val,$match))
{
echo $match[1]."<br />";
}
}
?>

Результатом работы данного скрипта станет распечатка двух индексов:
AfR
A78gh

Опубликовано 12.12.2013 в 14:25 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: PHP программирование · Теги: , , , ,