Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Что такое альтернатива? Это вот что:
Данный фрагмент:
while(<>){
if(/^exit$/){last}
if(/^quit$/){last}
if(/^stop$/){last}
}
Можно заменить этим, с использованием альтернативы:
while(<>){
# это перебор со сравнением с текстом, т.е. если хотя бы
# один фрагмент из альтернативы совпадет с текстом,
# то возвращаемое значение примет истину, т.е. в данном
# случае, если пользователь введет в STDIN, exit или quit или
# же stop, то мы завершим цикл
if(/^(quit|exit|stop)$/){
last;
}
}
Нужно проверить, есть ли в строке слово ALPHA и слово BETA:
$string = "BETALPHA";
if(($string =~ /ALPHA/) and ($string =~ /BETA/)){
print "OK";
}
Или так:
if($string =~ /(?=.*ALPHA)(?=.*BETA)/){
# так не делать – пример для перекрывающихся совпадений
print "OK";
}
$string =~ /^(?:(?!PAT).)*$/
Выражение истинно, если шаблон /PAT/ не совпадает (аналогично $string !~ /PAT/). Далее насчет конструкций (?=шаблон) и т. д.
В следующем примере ищется слово, за которым следуют три восклицательных знака, но сам пробел не включается в результат поиска:
$string = "One! Two!! Three!!! And some words next...";
$string =~ m/(w+(?=!!!))/;
print $1;
Ответ: Three
Вот неплохой пример, взятый из книги Perl Cookbook.
$string = "1234567890";
@nonlap = $string =~ /(ddd)/g;
@yeslap = $string =~ /(?=(ddd))/g;
print "Non-overlapping: @nonlap ";
print "Overlapping: @yeslap ";
Вот что получается:
Non-overlapping: 123 456 789