Python:动态构建正则表达式的最佳实践

Par*_*and 6 python regex

我有一个简单的功能,从一些文本中删除"单词":

def remove_word_from(word, text):
    if not text or not word: return text
    rec = re.compile(r'(^|\s)(' + word + ')($|\s)', re.IGNORECASE)    
    return rec.sub(r'\1\3', text, 1)    
Run Code Online (Sandbox Code Playgroud)

当然,问题在于,如果单词包含诸如"("或")"之类的字符,那么事情就会中断,并且在正则表达式的中间粘贴一个随机单词通常是不安全的.

处理此类案件的最佳做法是什么?是否有一个方便,安全的功能,我可以打电话来逃避"字",这样可以安全使用?

Vla*_*d H 21

你可以re.escape(word)用来逃避这个词.

  • 我还要求他使用`\ b`字边界字符. (2认同)
  • 这就是 Stackoverflow 如此出色的原因。不知何故,我错过了 re.escape 和 \b,将同时使用两者。 (2认同)