Forum Webscript.Ru

Программирование => Perl => Тема начата: AlterMann[RCK] от 17 Декабря 2002, 15:20:20

Название: Как в регулярном выражении поставить ограничение???
Отправлено: AlterMann[RCK] от 17 Декабря 2002, 15:20:20
Товарищи!!!
Подскажите, плиззз!
Как поставить ограничение в регуляром выражении... ну, чтобы он выдерал до опеределённого символа?

ну например...
строка
http://www.ru/#Название
и нада, чтобы выдералосля урл до # и писался в $1, а название в $2...

Очень нада и как можно скорее!
Название: Как в регулярном выражении поставить ограничение???
Отправлено: GotZfild от 17 Декабря 2002, 16:00:56

$s = "http://www.ru/#Название";
$s =~ m!^[url]http://[/url]([^/]+)/(.+)$!;
Название: Как в регулярном выражении поставить ограничение???
Отправлено: AlterMann[RCK] от 17 Декабря 2002, 16:25:56
ну а если например... вот так...

$val=~s/(http:\\/\\/\\S+\\#)/INSERT INTO links VALUES \\(\'$2\',\'$1\'\\);/g;

или как по другому??

короче нада, чтобы получилось вот так:
INSERT INTO nuke_links_links VALUES (\'Название\',\'http://www.ru\');

а получается...
INSERT INTO nuke_links_links VALUES (\'\',\'http://www.ru#\');
Название: Как в регулярном выражении поставить ограничение???
Отправлено: AlterMann[RCK] от 17 Декабря 2002, 16:50:33
Цитировать
$s =~ m!^http://([^/]+)/(.+)$!;

хотя это конечно прокатывает... но только он обрубает всё, что после .ru ...
вот такая засада получается...

INSERT INTO links VALUES (\'cgi-bin/category?ca_id=49#@ Port.ru - ОТКРЫТКИ - Выбор открытки\',\'ot.port.ru\');

и http:// тоже нужно... :-)

Короче, делаю вывод что нужно...
Не нужно ставить ограничение на / ... нада ставить чтобы брало с http:// (включая и его) и до # .... при этом решётку обрубая...

Но чё-то у меня не получается... :-)
Вернее я уже почти всё сделал, но http:// всё равно обрубается... :-)

В общем наваялся следующее регулярное выражение:
$val=~s/http:\\/\\/([^#]+)#(.+)$!/и тута ... то самое... с $1 и $2/
Название: Как в регулярном выражении поставить ограничение???
Отправлено: AlterMann[RCK] от 17 Декабря 2002, 17:42:05
ВСЁ, спасибо всем! я нашёл способ обойти... ;-)