Вырезать всё, кроме определенных подстрок (regexp)

sphere

Новичок
Вырезать всё, кроме определенных подстрок (regexp)

Приветствую.
Что-то туплю, видимо. Длительным поиском и мануалом не разрулил.

Задача: одним регекспом, без разделений и сборок, из строки вырезать всё кроме определенных подстрок.
Подстроки внутри строки могут отделяться известными делителями, например точкой или запятой и т.п.

Пример:
Входящая строка: "по,мож,ите,кто,может".
Оставить: "мож", "кто", "пожалуста".
Результат: "мож,кто".
 

Фанат

oncle terrible
Команда форума
фраза
Длительным поиском
в наши дни является, судя по всему, синонимом фразы
по,мож,ите,кто,может".
=)

а теперь перестаём играть в загадки, и рассказываем всё, как есть, без беллетристики.
или возвращаемся к мануалу.
 

sphere

Новичок
2Фанат
в наши дни является, судя по всему, синонимом фразы
Типа того, но тем не менее.

а теперь перестаём играть в загадки, и рассказываем всё, как есть, без беллетристики.
Ну дык:
Задача: одним регекспом, без разделений и сборок, из строки вырезать всё кроме определенных подстрок.
Есть строка. Нужно удалить из неё всё, кроме указанных фрагментов.
Если трудность вызывает фраза
Подстроки внутри строки могут отделяться известными делителями, например точкой или запятой и т.п.
, поясняю: строка может состоять, например, из слов. Тогда делитель фрагментов -- пробел, а сами фрагменты -- слова.
Регекспом удаляются соответственно все слова, кроме отдельно указанных.

Касательно мануалов:
[^] не подходит, ибо не убить нужно последовательность, а не символьный класс.
Далее из мануала:
"foo(?!bar) соответствует любому появлению "foo", после которого не идёт "bar"
в упор не могу понять, как просто "не включить в поиск фрагмент", без всяких "после которого не идёт".

Скорее всего, действительно туплю под вечер.
 

Фанат

oncle terrible
Команда форума
не надо мне твоих "например" и "известными делителями".
Если ты не понял, то поворяю. один раз.
или ты описываешь реальную проблему, или отправляешься читать мануал самостоятельно.
Если трудность вызывает
дружочек. трудности есть только у тебя. с регэкспом.
а больше ни у кого никаких трудностей. рекомендую этот факт как-то осознать. А то выглядит твоя реплика как-то двусмысленно. Как будто ты у нас профессор, а мы - нерадивые ученики, и ты нам задачку задал.
-~{}~ 06.11.06 20:49:

не забудь позаботиться о том, чтобы твой рассказ выглядел достоверным, а задача - осмысленной.
объяснение "обязательно делать регэкспом потому, что мне так в голову ударило" - не принимается.
 

sphere

Новичок
2Фанат
Вас фраза "Если трудность вызывает" озаботила? Считаете, что ничто не может вызвать у Вас трудность? Ок, буду знать, чтобы избавить Вас от лишних пояснений. В любом случае, не обижайтесь, дружочек.

не забудь позаботиться о том, чтобы твой рассказ выглядел достоверным, а задача - осмысленной.
Рассказ может звучать и как "в порядке обучения и выявления возможностей регекспов", ибо условие "убить все слова кроме" выглядит вполне тривиально, но простого решения не найдено.

Тем не менее, ближе к реальности:
1. Пользователь посылает api строки, из которых формируется запрос к БД. select="id,name,access", where="id=1 AND type=2", order="menu_index, id". Машинка оставляет поля, которые в таблице однозначно присутствуют и разрешены по условиям безопасности: select="id,name" ... order="id".

2. Из тегов xml нужно удалить все аттрибуты, кроме разрешенных. <tag att1="val" att2="val" att3="val" и любые другие, в т.ч. заранее неизвестные> остаётся: <tag att2="val">

3. Из странички всё, кроме разметочных тегов <div name="c"> и плейсхолдеров картинок [[img ... ]] заменить на <input>-ы. Должна остаться структура с картинками, но без текстов и пр.

Могу дать ещё с десяток простых примеров, но мне не так важно точное решение для каждого -- этим я займу своё время. Мне нужно понять смысл, на простом примере, который я указал ещё в первом посте.

объяснение "обязательно делать регэкспом потому, что мне так в голову ударило" - не принимается.
Регексп -- потому как давят сомнения, что разбиением - вычленением - сбором можно сделать быстрее (а такой подход я уже встречал ранее). В любом случае, тестировать способы буду сам, было бы с чем. Пока не с чем.
 
Сверху