Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.80.143.34] |
|
Сообщ.
#1
,
|
|
|
Есть строка вида "param1 - value1, param2 - value2..."
нужно выкинуть построки, в которых value=0 написал что-то вроде $line = "aaa - 5, bbb - 0, ccc - 8"; @var = split(/, /, $line); $out_str = ""; foreach my $elem (@var) { if ($elem !~ /(.*) - 0/) { $out_str .= $elem.", "; } } $out_str = substr($out_str, 0, -2); очень плохо соображаю в регулярных выражениях, наверняка есть какой-то более элегантный способ Добавлено вот так переписал $line = "aaa - 5, bbb - 0, ccc - 8"; $line =~ s!, .* - 0,!,!; |
Сообщ.
#2
,
|
|
|
Цитата очень плохо соображаю в регулярных выражениях, наверняка есть какой-то более элегантный способ оформите пост используя теги CODE |
Сообщ.
#3
,
|
|
|
ну на пхп я не силен, слава богу я его почти забыл
вот на питоне s = 'x - 0, a - 0, b - 1, c - 2, d - 0, e - 0, f - 3, g - 0, h - 4, i - 0, j - 0' re.sub(r'(?P<startcomma>[,\s]*)(?:\b\w+ - 0\b(?P<endcomma>[,\s]*))+', lambda x: ', ' if x.groupdict()['startcomma'] and x.groupdict()['endcomma'] else '' , s) вариант номер 2, проще re.sub(r'\b\w+ - 0\b[,\s]*', '' , 'x - 0, a - 0, b - 1, c - 2, d - 0, e - 0, f - 3, g - 0, h - 4, i - 0, j - 0').strip(' ,') функция поиска и замены по регулярному выражению (в пхп должен быть аналог), пример : re.sub ('\b\w{5,}\b', 'многа_букаф', 'тст тест теест тест тееееееест' ) # все слова длиннее 4 букв заменить на 'многа_букaф' : 'тст тест многа_букаф тест многа_букаф' strip по пхп-шному будет trim, кажись. s = s.strip(' ,') # удалить все пробелы и запятые с начала и конца строки Добавлено cezar, блин а вы некрофил, батенька. и я туда же оО |