簡體   English   中英

如何在句子中保留特定字符

[英]How can i retain specific characters in a sentence

我想使用正則表達式從句子中刪除某些單詞或字符,但有一些例外。

例如-我有一個字符串, this is [/.] a string [ra] with [/] something ,我想刪除[ra][/.]但不刪除[/]

我用了:

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

它工作正常,如何保留此-> [/]

您可以使用

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

參見regex演示

細節

  • \\[ -一個[ char
  • (?!/]) -如果當前位置的右側緊鄰有/]則負匹配將使匹配失敗
  • [^][]* - []以外的0+個字符
  • ] -一個]字符。

使用此模式\\[(?!\\/\\])[^\\]]+\\]並將所有匹配項替換為空字符串。

說明:它與[\\[匹配,然后確保,后面的不是NOT \\] ,所以我們不與[\\]匹配,這是通過負的超前查詢: (?!\\/\\]) ,然后它匹配所有內容直到]]本身具有圖案[^\\]]+\\] [^\\]]+其它一個或多個字符匹配,那么] )。

演示版

您可以使用交替方式在組中捕獲要保留的內容,並與要刪除的內容匹配。

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

說明

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

  • (\\[/])分組捕獲[/]
  • | 要么
  • \\[[^]]+\\]使用否定的字符類匹配左方括號直到右方括號

替換為第一個捕獲組\\1

正則表達式演示

Python演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM