我需要从非单词字符中删除一个字符串:
<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