我想知道是否有可推荐的RegEx模式来匹配英语和非英语字符。到目前为止,我已根据[^\x00-\x7F]+|[a-zA-Z'-]*提出了answer provided at SO。我的解决方案似乎有效,但由于我对RegEx非常好,我想请你检查这个令牌并提出一些改进建议。我知道大多数触及这个主题的解决方案,如this,但我认为此处尚未有一个好的RegEx。
答案 0 :(得分:0)
答案主要取决于语言。但一般来说,你必须启用" unicode标志" (这通常是通过将(?u)
添加到正则表达式或附加/u
)并使用unicode字符串来完成的。这样,\w
,\s
和其他人将正确匹配相应的unicode字符。
Python 2中的一个示例(Python 3默认使用unicode):
>>> re.match('\w', 'è') # byte string, no unicode flag: no match
>>> re.match('(?u)\w', u'è') # unicode string and unicode flag: match
<_sre.SRE_Match object at 0x7f258bac07e8>
>>> re.match('\w', u'è', re.UNICODE) # another way to enable the unicode flag
<_sre.SRE_Match object at 0x7f258bac0850>