Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Кто шарит в регулярных выражениях Perlа?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Daniel_777
Гость





СообщениеДобавлено: Вс Окт 06 2002 09:49    Заголовок сообщения: Кто шарит в регулярных выражениях Perlа? Ответить с цитатой

Как с помощью регулярного выражения выделить из строки строку "любойURL.shtml"
(именно ".shtml" !!!) при этом ограничив "жадность" квантификатора (т.е чтобы возвращала не "любойURL.shtml' target='_blank" , а "любойURL.shtml")?
Вернуться к началу
MMax
Гость





СообщениеДобавлено: Вт Окт 08 2002 15:29    Заголовок сообщения: Re: Кто шарит в регулярных выражениях Perlа? Ответить с цитатой

Читай статьи на этом же сайте - Введение в Перл (Маслов ВВ):

m/PATERN/gimosx
/PATERN/gimosx

Поиск в строке по патерну (шаблону). В скалярном контексте возвращает логическое значение true (1) или false (''). Если строка не указана с помощью операторов '=~' или '!~', поиск ведется в строке $_ Опции: g - Глобальный поиск. Поиск всех вхождений.
i - Сравнение не зависит от регистра (верхний или нижний)
m - Строка многострочная.
o - однопроходная компиляция
s - однострочная строка
x - используются расширенные регулярные выражения.


Если '/' - ограничитель, то начальное 'm' можно опустить. С помощью него в качестве ограничителя может быть любой символ кроме пробела.

PATTERN может содержать переменные, которые будут интерполироваться (перекомпилироваться) каждый раз в момент вычисления. Переменные $) и $| не интерполируются. Если вы хотите, что бы такой шаблон интерполировался один раз - добавьте /o. Это необходимо делать в циклах поиска для увеличения быстродействия, однако, если вы измените значение переменной, Perl этого даже не заметит.

Если PATERN - нулевая строка, то используется последнее регулярное выражение.

В скалярном контексте возвращается список элементы которого - результаты выполнения выражений в скобках патерна ($1, $2, $3...). Обратите внимание что первый элемент $1.

Пример:

$a = "/usr/local/perl/perl.bin"; # Анализируемая строка

Цель: Создать массив @dirs с именами директорий.
Решение: Самый простой способ воспользоваться split('\/') но в качестве примера используем скобки.
@dirs =~ m[/(\w*)/(\w*)/(\w*)/(\w*)]

Здесь 'm[' - использовать квадратные скобки как ограничители. (\w*) - шаблон алфавитно-цифровой последовательности.
В результате @dirs равен ('usr', 'local', 'perl')
Вернуться к началу
FFF
Гость





СообщениеДобавлено: Вт Окт 08 2002 17:32    Заголовок сообщения: Re: Кто шарит в регулярных выражениях Perlа? Ответить с цитатой

>>Как с помощью регулярного выражения выделить из строки строку "любойURL.shtml"
>>(именно ".shtml" !!!) при этом ограничив "жадность" квантификатора (т.е чтобы возвращала не "любойURL.shtml' target='_blank" , а "любойURL.shtml")?

примерно так. не слишком оптимально, т.к. сам только осваиваю Perl:
--------------------------------------------
$ss="8888http://f.. =~ /http(\S+?)shtml/ix; ##нахождение 1го совпадения
print "\n m 1st: " , $& ;

$ss= $'; ##остаток строки после 1го совпадения
$ss =~ /http(\S+?)shtml/ix; ##нахождение совпадения в остатке строки

print "\n m 2nd: " , $& ;
--------------------------------------------
Дом.задание: организовать цикл для нахождения ВСЕХ вхождений в строке. Но если заведомо известно, что в строке не более одного вхождения, то не стоит и заморачиваться.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...