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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





Глава 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