2015-11-10 5 views
0

У меня есть текст, как это:REGEX: удалить все слова, не начинающиеся с определенного символа

§abc §def word1 word2 word3 word4 

§ghi §jkl §mno word5 §pqr word6 word7 

Я хочу, чтобы все слова, начинающиеся с «§» (§abc, §def и т.д.) и удалить другие (word1, word2, и т.п.). Я также хочу, чтобы сохранить строки и оставить единое пространство между словами, так что выходной текст будет выглядеть так:

§abc §def 

§ghi §jkl §mno §pqr 

Я уже пытался найти ответ, но ничего не работает для меня Спасибо!

РЕАЛЬНЫЙ СЛУЧАЙ Пример:

What is a §text? The §words that make up the main part of a book, magazine, §newspaper, Web site, etc.

ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ:

§text §words §newspaper

+1

Что именно вы пробовали? Ваша проблема может быть решена с использованием, например, негативных lookbehinds. –

+0

Привет, спасибо за подсказку. Не могли бы вы рассказать мне, как написать выражение, используя отрицательные lookbehinds? Я собираюсь использовать его в Notepad ++ – rescog

+0

Если вы пойдете по Google, для чего нег. lookbehinds - вам будет очевидно, как написать такое выражение. Вскоре - это должно быть что-то вроде границы слова + отрицательный вид символа § + один или несколько символов \ w. –

ответ

1

Это простой способ работает для вас:

Найти что: \w+ (пробел следуют слова)
Заменить: NOTHING

Редактировать в соответствии комментировать:

Найти: \b(?<!§)\w+
Заменить: NOTHING

правка:

Найти: \b(?<!§)[^§]+
Заменить на: (один пробел)

+1

Нет, это не сработает. Ваше выражение находит все слова и оставляет символы. Я должен удалить все слова, кроме слов, начинающихся с §. – rescog

+0

Я пробовал это: '(? rescog

+0

@rescog: см. мое редактирование? Это нормально? – Toto

Смежные вопросы