Python正则表达式:re.sub()没有处理正确的重音字符,与re.compile()相反.sub()

时间:2018-05-07 16:53:56

标签: python regex python-unicode

我需要从非单词字符中删除一个字符串:

<div className="col-md-6">
  <TextBox
    content={this.state.activeNode}
    onClick={this.showImage}
  />
</div>
<div className="col-md-6">
  {
    visible
    && <DetailBox src={this.props.src} />
  }
</div>

...但是re.sub()将重音字母混淆为非单词字符(\ W)。这是:错误地,re.sub()从'Óscar'中删除'Ó'。

但是,re.compile()。sub()正确处理重音字母:

>>>string = u'_Óscar;'
>>>print re.sub(r'[_\W]*', u'', string, re.UNICODE)
scar

re.compile()。sub()删除下划线和分号,但正确地保留了'Ó'。

re.sub()和re.compile()。sub()之间是否有任何正则表达式算法的区别? 我想我错过了什么。

编辑:感谢@JonClements评论:我错误地设置了re.UNICODE标志。应设置为:>>>string = u'_Óscar;' >>>print re.compile('[_\W]*', re.UNICODE ).sub(u'', string) Óscar 。 所以以下工作正常:

flags=re.UNICODE

0 个答案:

没有答案