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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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