П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 6345 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 8460 раз(а).

Учебник HTML.
Просмотров 5074 раз(а).

Руководство по PHP5.
Просмотров 2228 раз(а).

Хостинг через призму DNS.
Просмотров 7351 раз(а).

Подборка текстов стандартных документов.
Просмотров 67 раз(а).

Учебник PHP - Самоучитель
Просмотров 5366 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 11543 раз(а).

Внешние атаки...
Просмотров 7785 раз(а).

Учебник PHP.
Просмотров 4476 раз(а).

SSI в примерах.
Просмотров 1341 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 7: Регулярные выражения.
7.4 Еще об операции сопоставления
7.4.4 Использование интерполяции переменных

Перед тем как регулярное выражение рассматривается на предмет наличия специальных символов, в нем производится интерполяция переменных. Следовательно, регулярное выражение можно строить не только из литералов, но и из вычисляемых строк. Например:

$what = "bird";
$sentence = "Every good bird does fly.";

if ($sentence =~ /\b$what\b/) {
  print "The sentence contains the word $what!\n";
}

Здесь мы использовали ссылку на переменную для построения операции сопоставления с регулярным выражением \bbird\b/.

Вот несколько более сложный пример:

$sentence = "Every good bird does fly.";
print "What should I look for? ";
$what = <STDIN>;
chomp($what) ;

if ($sentence =~ /$what/) ( # нашли!
  print "I saw $what in $sentence.\n";

} else {
  print "nope... didn't find it.\n";
}

Если вы введете слово bird, оно будет найдено, а если слово scream — не будет. Если ввести [bw] ird, результаты поиска тоже будут успешными. Это говорит о том, что квадратные скобки в данном случае воспринимаются как символы сопоставления с образцом.

Чтобы избежать этого, следует поставить перед этими символами обратную косую, которая превратит их в символы буквального сопоставления. Это кажется сложным, если в вашем распоряжении нет закавычивающей управляющей последовательности \Q:

$what = "[box]";

foreach (qw(in([box] out [box] white [sox] ) ) {

  if (/\Q$what\E/) {
    print "$_ matched!\n";
  }
}

Здесь конструкция \Q$what\E превращается в \[box\], в результате чего операция сопоставления ищет пару квадратных скобок, а не рассматривает всю конструкцию как класс символов.

Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание подраздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru