Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

$string =~ s/!{8}//;

print $string;

Здесь мы удаляем ровно 8 восклицательных знаков, поэтому результат будет такой: It is some text?!!!!!!!!

Если мы добавим модификатор g, то и последние 8 восклицательных знаков тоже исчезнут, а вот если сделать 9 восклицательных знаков, тогда ничего не будет заменено...

Теперь о «жадности» квантификаторов: квантификатор заменит самую длинную серию – это и есть жадность.

Разберем такой пример, вы хотите заменить «That is» на «That's»:

# вероятно, вы сделате так:

$string = "That is reality, isn't it?";

$string =~ s/.*is/That's/;

print $string;

Результат будет такой: That'sn't it?

Так как «жадность» квантификаторов проявляется слева направо, т.е. будет выбрана максимальная серия слева направо. Это исправить легко – просто добавляем знак вопроса «?»:

$string =~ s/.*?is/That's/;

И теперь результат будет тот, что нужно: That's reality, isn't it? Вопросительный знак обозначает ноль или одно совпадение, поэтому как только найдено первое совпадение оно сразу заменяется, и все.

Вот список минимальных квантификаторов: +?, *?, ??, {}?.

Дальше несколько примеров с квантификаторами.

Удаляем начальные пропуски:

$string = "             Some text";

$string =~ s/^s+//;

Удаляем конечные пропуски:

$string = "Some text                      ";

$string =~ s/s+$//;

А теперь классы и группы.

Класс символов – это символ, или список символов, заключенные в квадратные скобки. Любой символ из квадратных скобок сопоставляется со строкой для сравнения, например:

$string = "Berry";

if ($string =~ /[br]/){

    print "B and R";

}

В данном случае оператор m/.../ используется в скалярном контексте, поэтому в случае совпадения шаблона возвращает истину, иначе пустую строчку. Знак дефис (-) имеет особый смысл для класса символов – диапазон символов (в начале указывается начальный символ, потом конечный), например:

$string = "some Text";

if($string =~ /[A-Z]/){

    print "Uppercase here...";

}

Или вот другой пример:

# если есть буквы, то возвращает истину

$string = "some text";

if($string =~ /[A-Za-z]/){

    print "Letters here...";

}

Здесь диапазон от A до Z заглавных букв, т.е. если в строчке есть хотя бы одна заглавная буква то оператор m/.../ возвращает истину. А если перед открывающей квадратной скобкой, поставить символ ^, тогда смысл меняется на противоположный, т.е. символ сравнивается, с любым не входящим в этот класс.

Вот пример:

$string = "abcdef";


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2016 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100