|
|
|
| Строчке <a href="javascript:OpenDoc('2748-17');"> хочу придать вид
<a href="http://site.name.xx/cgi-bin/laws/main.cgi?nreg=2748-17&new=1">
Значение "2748-17" всегда варьируется, сохраняя при этом свою длину. Выражение надо написать одной строчкой. Если это представляется возможным - сделай. | |
|
|
|
|
|
|
|
для: блогер
(16.01.2011 в 02:08)
| |
$text =~ s/<a\s+href="javascript:OpenDoc\('(\d\d\d\d-\d\d)'\);">/<a href="http:\/\/site.name.xx\/cgi-bin\/laws\/main.cgi?nreg=$1&new=1">/gi;
|
Можно более гибко, если есть вариации. | |
|
|
|
|
|
|
|
для: SHAman
(16.01.2011 в 15:08)
| | >Можно более гибко, если есть вариации.
просится либо так
$text =~ s/<a\s+href="javascript:OpenDoc\('([^']*)'\);">/<a href="http:\/\/site.name.xx\/cgi-bin\/laws\/main.cgi?nreg=$1&new=1">/gi;
|
либо, если следовать строго букве условия, так
$text =~ s/<a\s+href="javascript:OpenDoc\('([^']{7})'\);">/<a href="http:\/\/site.name.xx\/cgi-bin\/laws\/main.cgi?nreg=$1&new=1">/gi;
|
Правда, боюсь что простой подстановки будет недостаточно. | |
|
|
|
|
|
|
|
для: Trianon
(16.01.2011 в 15:50)
| | Твои ничем не отличаются почти. Но мое решение, вероятно, быстрее, так как интерпретатору регулярных выражений точно известно что именно искать, не используется шаблон неопределенной длинны и точнее классы символов. \d - меньшее множество, чем [^']. | |
|
|
|
|
|
|
|
для: SHAman
(16.01.2011 в 15:08)
| | Проверить бы. У перла какой аналог print или echo или say? Имя переменной - text или $text? | |
|
|
|
|
|
|
|
для: блогер
(17.01.2011 в 08:22)
| |
#!/usr/bin/perl
#эту строчку нужно раскоменнтировать если скрипт запускается через браузер, а не через консоль
#print "Content-type: text/html\n\n";
$text=qq(<a href="javascript:OpenDoc('(1432-17)');">);
print "<p>Было: $text</p>";
$text =~ s/<a\s+href="javascript:OpenDoc\('(\d\d\d\d-\d\d)'\);">/<a href="http:\/\/site.name.xx\/cgi-bin\/laws\/main.cgi?nreg=$1&new=1">/gi;
print "<p>Стало: $text</p>";
|
| |
|
|
|
|
|
|
|
для: SHAman
(17.01.2011 в 09:55)
| | В консоли запускал. Что-то не так.
<p>Стало: <a href="javascript:OpenDoc('(1432-17)');"></p>
Причём, если заремарить первую переменную $text, то получается
<p>Стало: </p>
На сколько я понимаю, этого не должно происходить, поскольку значение первой переменной не участвует в следующем выражении. Там определяется новое значение старой переменной. | |
|
|
|
|
|
|
|
для: блогер
(17.01.2011 в 23:34)
| | Ну конечно не получается. Скобки лишние надо убрать:)
OpenDoc('(1432-17)')
заменить на
OpenDoc('1432-17')
|
Это я тупанул когда переписывал исходные данные по регулярке.
Если убить первую переменную, то где будет храниться изначальный текст-то? Второе выражение - это не присваивание а операция связывания.
$text =~ s/мама/папа/;
найдет в тексте, содержащемся в переменной $text все строки "мама" и заменит их на "папа".
$text =~ /мама/;
Вернет истину если в тексте, содержащемся в переменной $text есть подстрока "мама" и ложь в противном случае. | |
|
|
|
|
|
|
|
для: SHAman
(18.01.2011 в 09:55)
| | Вот теперь работает. В консоли. А для того, что бы оно работало там, где я задумал - выражение должно быть написано в одну строчку. Там нет возможности определять переменные, да и не подгонишь один конкретный пример под все случаи - ID варьируется. Короче, надо s/было/стало/ | |
|
|
|
|
|
|
|
для: блогер
(18.01.2011 в 10:40)
| | facepalm.jpg
Я уже дал решение в одну строку. Я не знаю где вы задумали и что и как и не знаю что вы ожидаете от работы скрипта. Как вы задачу поставили, так я ее и решил. Причем несколько раз, заметим. Если вы хотите решать другую задачу, то надо было ставить ее как есть. Если вам достаточно принципа, то вот он принцип - берите и используйте.
Я точно знаю что одной операцией можно заменить все ссылки описанного вами вида на то, что должно получиться. И я могу сделать это. И я показал как. Чего вам еще надо-то? | |
|
|
|
|
|
|
|
для: SHAman
(18.01.2011 в 10:56)
| | Какое-то из решений оказалось рабочим - я задействовал все. В результате желаемая цель была достигнута. Ты оказал мне неоценимую услугу.
Если, что надо написать на REXX - обращайся 626C6F676572406E67732E7275 | |
|
|
|
|
|
|
|
для: блогер
(18.01.2011 в 10:40)
| | шаблон с произвольным id я привел в (16.01.2011 в 15:50) в первой из строк. | |
|
|
|
|
|
|
|
для: блогер
(17.01.2011 в 23:34)
| | Вот результат работы скрипта. | |
|
|
|