powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) RegExp
8 сообщений из 8, страница 1 из 1
(Perl) RegExp
    #32980596
g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
g
Гость
Естьли возможность замены определённых вхождений строки символов
например
строка
x= x= x= x= x= x= x= x= x=
получить строку типа
x= x=5 x= x=2 x= x= x= x=4
т.е. типа изменения значения по "порядку" вхождения?
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32980931
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и какой здесь порядок, если не секрет ?
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32980989
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не вижу никакой закономерности
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32981090
g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
g
Гость
Порядок и значения передаётся в качестве входных параметров.

file.pl 1 3 4 6
типа
1-й x = 3
4-й x = 6
и т.д.

пока что накопал типа
--- cut ---
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
sub ret_val
	{
	my($i) = 3;
	while (@ARGV[$i])	
		{
		if (@ARGV[$i] == (@_[0]-1))
			{
			return @ARGV[$i+1];
			}
		$i = $i + 2;
		}
	}
--- cut ---

Код: plaintext
1.
2.
3.
4.
5.
while($data_out[$j])
	{
	@data_out[$j] =~ s/x=/ if (++$match > 0) {"x=\"".ret_val($match)."\""; } else {($1);}/e;
	$j++;
	}

Только вот не могу пока понять, как оставить старое значение, если оно не попадает в список входных параметров.
т.е. в привидённом выше примере для 2-го x ,например. Оно его перезатирает на ""

ПыСЫ. Начинающий, по-этому сильно не пинайте если где туплю. ;-))
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32981202
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может я конечно чего то не понял, но если без регекспов, то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
my $str = 'x= x= x= x= x= x= x= x= x=';

unshift @ARGV,'';

my $i =  0 ;

print join 'x=', map {
                        $ARGV[$i++] . $_
                    } split /x=/, $str;

дает примерно такой результат:

Код: plaintext
1.
2.
gosha@b127:/tmp> perl test.pl   2  ''  3 
x= 2  x= x= 3  x= x= x= x= x=

это не то, что ты ожидаеш получить ?
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32981222
g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
g
Гость
да, типа того, только кол-во x не задано изначально и может быть (теоретически) произвольным, может уже содержать некие значения, которые не надо править. т.е. типа поправить ТОЛЬКО 1-й икс, 3-й и 6-й, например, остальное оставить без изменений.
RegExp просто выбрал как один из возможных путей решения.
Можно и без оного, не принципиально, лишь бы мыслЯ попёрла в нужном направлении ;-))

Код: plaintext
1.
2.
3.
print join 'x=', map {
                        $ARGV[$i++] . $_
                    } split /x=/, $str;
tnx. подумаю, может чо получится и из этого выжать.
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32981245
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что у Вас должно получиться в итоге, почему не легче сделать масив ?

x[0]
x[1]
x[2]
x[3]
...
Рейтинг: 0 / 0
(Perl) RegExp
    #32981283
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gда, типа того, только кол-во x не задано изначально и может быть (теоретически) произвольным, может уже содержать некие значения, которые не надо править. т.е. типа поправить ТОЛЬКО 1-й икс, 3-й и 6-й, например, остальное оставить без изменений.


...вообще говоря, количество x в моем примере тоже произвольно, и строчка
$str = 'x= x=91 x= x= x= x= x= x= x=', при вызове `perl test.pl 2 '' 3`, на выходе будет:
Код: plaintext
1.
x= 2  x= 91  x= 3  x= x= x= x= x= x=

других условий по которым бы определялаось какой параметр заменять а какой нет в исходных условиях небыло.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) RegExp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]