替换python中括号之间的所有非字母数字异常

时间:2019-02-21 17:56:46

标签: python regex

我想删除除括号外的所有非字母数字字符以及python中它们之间的内容。

例如:

GROUP BY AGE_RANGE

成为

My son's birthday [[David | David Smith]] $$ (is) "today" 2019 ][

这是我现在的功能:

My son s birthday [[David | David Smith]] is today 2019

它像我想要的那样替换所有非字母数字,但是它替换了方括号和内部的管道。我不知道如何在子方法中添加新的正则表达式并添加新条件。

2 个答案:

答案 0 :(得分:2)

您可以使用alternation选择要保留的内容,而不是替换[[]]|匹配字词{ {1}},然后将这些部分连接回字符串。

\w+

这将匹配

  • \[\[[^]]+\]\]|\w+ 使用否定的字符类从\[\[[^]]+\]\][[匹配
  • ]]
  • |匹配单词字符1次以上

Regex demo | Python demo

例如:

\w+

答案 1 :(得分:0)

import re
x = "My son's birthday [[David | David Smith]] $$ (is) \"today\" 2019 ]["

def clean(texte):
    return re.sub(r"[^\[\[[^\]\]+\]\]|\w]+", " ", texte).lower()

print(clean(x))

>>> 'my son s birthday [[david | david smith]] is today 2019 ]['

然后您可以分割“]”并保留第一个索引。