import re
pattern = re.compile('[abc]')
match_result = pattern.match('fabc')
if match_result:
print match_result.group()
search_result = pattern.search('fabc')
if search_result:
print search_result.group()
以上的实现方式需要先编译一个 pattern,然后再进行匹配。实际上,我们可以直接利用 re.match(pattern, string) 函数来实现相同的功能。但是直接匹配的方式没有先编译再匹配的方式灵活,首先是正则表达式没办法重用,如果大量数据进行同一模式匹配,意味着每次都需要内部编译,造成性能损失;另外,re.match()函数没有pattern.match()功能强大,后者可以指定从哪个位置开始匹配。
编码问题
了解 python 正则的基本功能后,剩下的事情就是找到一个合适的正则表达式来匹配生僻字和非法字符。非法字符很简单,采用以下 pattern 就可以实现匹配:
pattern = re.compile(r'[~!@#$%^&* ]')
然而对于生僻字的匹配,着实难倒了我。首先是对于生僻字的定义,什么样的字算生僻字?经过咨询项目经理,规定非 GB2312 的字符属于生僻字。接下来的问题是,如何匹配 GB2312 字符?
经过查询,GB2312 的范围是[\xA1-\xF7][\x