RegEx:一种处理英语和非英语字符的方法(以及我的解决方案)

时间:2016-03-26 18:48:12

标签: regex autohotkey

我想知道是否有可推荐的RegEx模式来匹配英语和非英语字符。到目前为止,我已根据[^\x00-\x7F]+|[a-zA-Z'-]*提出了answer provided at SO。我的解决方案似乎有效,但由于我对RegEx非常好,我想请你检查这个令牌并提出一些改进建议。我知道大多数触及这个主题的解决方案,如this,但我认为此处尚未有一个好的RegEx。

1 个答案:

答案 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>