Как я могу сохранить определенные символы в предложении

1

Я хочу удалить определенные слова или символы из предложения с некоторыми исключениями, используя регулярное выражение.

Для example- у меня есть строка, this is [/.] a string [ra] with [/] something, я хочу удалить [ra], [/.] Но не [/].

Я использовал:

m = re.sub('\[.*?\]','',n)

который отлично работает, как я могу сохранить this-> [/]

  • 0
    new_string=old_string.replace('[ra'],'').replace('[/.]','') - это ответ на вопрос, который вы задали. Если это не то, что вы хотите, я предлагаю задать вопрос более точно, чем просто список вещей, которые вы делаете и не хотите удалять.
Теги:

3 ответа

2
Лучший ответ

Вы можете использовать

re.sub(r'\[(?!/])[^][]*]', '', n)

См. Демо-версию regex.

подробности

  • \[ - a [ char
  • (?!/]) - отрицательный результат, который не соответствует совпадению, если есть /] сразу справа от текущего местоположения
  • [^][]* - 0+, кроме [ и ]
  • ] - a ] char.
  • 1
    Спасибо, работал как шарм
1

Вы можете использовать чередование для захвата в группе того, что вы хотите сохранить, и сопоставить то, что хотите удалить.

result = re.sub(r"(\[/])|\[[^]]+\]", r"\1", n)

объяснение

(\[/])|\[[^]]+\]

  • (\[/]) Захват [/] в группе
  • | Или же
  • \[[^]]+\] Сопоставьте открытую квадратную скобку до закрывающей квадратной скобки с использованием символа отрицательного символа

Замените первую группу захвата \1

Демо-версия Regex

Демо-версия Python

1

Используйте этот шаблон \[(?!\/\])[^\]]+\] И замените все совпадения пустой строкой.

Объяснение: оно соответствует [ с \[, а затем заверяет, что следующее НЕ - это \], поэтому мы не сопоставляем [\], это делается с отрицательным lookahead: (?!\/\]), Тогда оно соответствует всем до ] и ] с шаблоном [^\]]+\] ([^\]]+ соответствует одному или нескольким другим символам, а затем ]).

демонстрация

Ещё вопросы

Сообщество Overcoder
Наверх
Меню