繁体   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