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

时间:2018-10-12 14:47:48

标签: python regex

我想使用正则表达式从句子中删除某些单词或字符。

例如-我有一个字符串this is [/.] a string [ra] with [/] something,我想删除[ra][/.]而不是[/]

我用过:

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

效果很好,如何保留此-> [/]

3 个答案:

答案 0 :(得分:2)

您可以使用

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

请参见regex demo

详细信息

  • \[-一个[字符
  • (?!/])-如果当前位置的右侧紧邻/],则负向搜索将使匹配失败。
  • [^][]*-除[]以外的0多个字符
  • ]-一个]字符。

答案 1 :(得分:1)

使用此模式\[(?!\/\])[^\]]+\],并将所有匹配项替换为空字符串。

说明:它将[\[匹配,然后确保,后面的不是\],所以我们不匹配[\],因为它是负数前瞻:(?!\/\]),然后将其匹配所有内容,直到]]本身与模式[^\]]+\][^\]]+匹配一个或多个字符,然后匹配] )。

Demo

答案 2 :(得分:1)

您可以使用交替方式在组中捕获要保留的内容,并与要删除的内容匹配。

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

说明

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

  • (\[/])分组捕获[/]
  • |
  • \[[^]]+\]使用否定的字符类将左方括号匹配到右方括号

替换为第一个捕获组\1

Regex demo

Python demo