Регулярные выражения

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

Сообщение Ciber SLasH » Вс фев 08, 2004 11:51 pm

Хай пипл !!!
Возникли некоторые трудности с RegEx.
Мне нужно найти в тексте между словами 2 и более пробелов и удалить их. Например: . . . <td width="100%" . . class="leftHead"> . . ., где "точка" - это пробел. Пробелы, которые могут быть (а могут и не быть) с начала строки и перед концом строки игнорируются. Пробовал так: \S\x20{2,}\S - выделяется текст из примера: " . . c - это почти то, но как мне удалить эти 2 пробела и оставить 2 граничные буквы без изменения.

У кого какие соображения по этому поводу ?
Ciber SLasH
Майор
 
Сообщений: 314
Зарегистрирован: Пн ноя 24, 2003 11:28 am
Откуда: Питер
Пункты репутации: 0

Сообщение Sledge » Пн фев 09, 2004 7:17 am

s/\s+/ / - этот regexp заменяет несколько подряд идущих пробельных символов (табуляция, пробел и т.д.) на 1 пробел.

s/\s+// - этот regexp удаляет несколько подряд идущих пробельных символов (табуляция, пробел и т.д.).


s/(?!\S)\s+(?=\S)//g; - у меня вот так получилось (Perl): удаляет все пробельные символы между всеми словами в строке, но и в начале строки тоже. Только вопрос: "А надо ли усложнять условие?" Просто будет гораздо проще, если работать со всеми пробелами по регулярному выражению (см. начало сообщения :-) ) . И не забывай /g в конце рег.выражния (приказ работать со всеми совпадениями в источнике, а не только с первым).

Вариант "в лоб" (по-простому, но не очень рационально): s/(\S)\s+(\S)/\1\2/g
Sledge
Рядовой
 
Сообщений: 7
Зарегистрирован: Пн май 05, 2003 7:41 am
Пункты репутации: 0

Сообщение Ciber SLasH » Пн фев 09, 2004 10:50 pm

<!--QuoteBegin-Sledge+Feb 9 2004, 14:17--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (Sledge @ Feb 9 2004, 14:17)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Вариант "в лоб" (по-простому, но не очень рационально): s/(\S)\s+(\S)/\1\2/g<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Большое спасибо !
Это как раз то, что нужно Изображение
Ciber SLasH
Майор
 
Сообщений: 314
Зарегистрирован: Пн ноя 24, 2003 11:28 am
Откуда: Питер
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron