python正则表达式选择整个单词

时间:2015-08-20 15:58:30

标签: python regex

我正在编写一个将拼写错误引入句子的脚本。我使用python re模块用拼写错误替换原始单词。脚本如下所示:

# replacing original word by error
pattern = re.compile(r'%s' % original_word)    
replace_by = r'\1' + err
modified_sentence = re.sub(pattern, replace_by, sentence, count=1)

但问题是,即使original_word是另一个单词的一部分,它也会被取代,例如:

如果我有

original_word = 'in'
err = 'il'
sentence = 'eating food in'

它会在食物中取代'in'的出现,如:

> 'eatilg food in'

我正在检查re documentation,但它没有提供有关如何包含正则表达式选项的任何示例,例如:

如果我的模式是:

regex_pattern = '\b%s\b' % original_word

这将解决问题,因为\ b代表'字边界'。但它似乎没有用。

我试图通过以下方式找到解决方法:

pattern = re.compile(r'([^\w])%s' % original_word)

但这不起作用。例如:

original_word = 'to'
err = 'vo'
sentence = 'I will go tomorrow to the'

将其替换为:

> I will go vomorrow to the 

谢谢,任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

有关python re模块中单词边界的示例,请参阅here。看起来你很接近只需要把它们放在一起。以下脚本为您提供了所需的输出...

import re

original_word = 'to'
err = 'vo'
sentence = 'I will go tomorrow to the'

pattern = re.compile(r'\b%s\b' % re.escape(original_word)) 
modified_sentence = re.sub(pattern, err, sentence, count=1)

print modified_sentence

输出 - >我明天会去