Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 21:42   #1
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию Как регеспом в перле вставить подстроку

Есть строка. Нужно вставить в начале строки символ, если в самой строке есть определенная подстрока (найденную подстроку удалить). Можно это сделать одним регеспом?
Sergey2 вне форума Ответить с цитированием
Старый 12.10.2010, 01:41   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Что-то типа этого
PHP код:
    $a 'abcde';
    
$b preg_replace(array('/^(.*bcd.*)$/''/bcd/'),array('z$1'''),$a); 
где bcd искомая строка, а z - символ который нужно добавить в начало строки.
При этом не забываем, что вот такая конструкция работает В ДВА РАЗА БЫСТРЕЕ (проверено):
PHP код:
    $a 'abcde';
    if(
strpos($a'bcd')) {$b 'z'.str_replace('bcd'''$a);} 
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 12.10.2010, 07:46   #3
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Вообщет человек на perl пишет
arvitaly вне форума Ответить с цитированием
Старый 12.10.2010, 11:17   #4
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Sergey2
Ну собоственно Johnatan уже решил проблему.
Только на Perl перевести все надо.
Вот пример
Код:
use strict;
my $str='adasd';
$str=~s/^(.*as.*)$/z$1/;
print $str;
Тут as искомая строка, а z -то что вставляем.
ssdm вне форума Ответить с цитированием
Старый 12.10.2010, 12:21   #5
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
use strict;
my $str='sdfasqwe';
$str=~s/^(.*)as(.*)$/z$1$2/;
print $str;
- вот правильный вариант, где as искомая строка, а z -то что вставляем.

Последний раз редактировалось ssdm; 12.10.2010 в 12:31.
ssdm вне форума Ответить с цитированием
Старый 12.10.2010, 23:59   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Да, сорри. Пропустил про перл в заголовке.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 13.10.2010, 00:49   #7
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

спасибо огромное. А можно как-нить сделать так что бы выражения регеспа брались из переменной?
$str=~s/$search/$st/;
работает, но если в $st я пытаюсь использовать возврат результата поиска, т.е. $1, то не работает
Sergey2 вне форума Ответить с цитированием
Старый 13.10.2010, 11:46   #8
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

ну как вариант можно сделать так
Код:
use strict;
my $search="qw";
my $st="zzz";
my $str='sdfasqwe';
$str=~s/^(.*)$search(.*)$/$st$1$2/;
print $str;
Либо попробовать через eval .
ssdm вне форума Ответить с цитированием
Старый 13.10.2010, 19:43   #9
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от ssdm Посмотреть сообщение
ну как вариант можно сделать так
Код:
use strict;
my $search="qw";
my $st="zzz";
my $str='sdfasqwe';
$str=~s/^(.*)$search(.*)$/$st$1$2/;
print $str;
Либо попробовать через eval .
не. Нужно целиком что бы $1 были в переменной. А через евал тоже пробовал но что то не получается
Sergey2 вне форума Ответить с цитированием
Старый 14.10.2010, 11:38   #10
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Кажется мне что вы неправильный путь выбрали для решения своей проблемы.
Скажите что вам нужно сделать. Возможно проблема другим , более простым путем решается.
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить в строку S подстроку A Vylkan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.02.2010 04:49
как в перле можно сравнить два файла? menik Помощь студентам 1 23.02.2009 10:16
Как передать в TEdit подстроку под курсор nnova Общие вопросы Delphi 5 05.11.2008 05:01
Как удалить из строки подстроку по маске ? - fenix - Помощь студентам 4 23.04.2008 15:04