1. 去除emoji
emoji_pattern = re.compile(u'['
u'\U0001F300-\U0001F64F'
u'\U0001F680-\U0001F6FF'
u'\u2600-\u2B55]+',
re.UNICODE)
参考
https://segmentfault.com/a/1190000007594620
https://apps.timwhitlock.info/emoji/tables/unicode#block-6c-other-additional-symbols
2. 匹配包含某些字符同时不包含某些字符
例子1: 匹配包含error不包含error前后的abc
p = re.compile(r'^((?!abc).)*error((?!abc).)*$')
print p.search("123abc123error123")
print p.search("123ab123error123")
结果:
None
<_sre.SRE_Match object at 0x7f129ce81a08>
例子2: 匹配包含error不包含多个字符串,比如abc和def
p = re.compile(r'error((?!(abc|def)).)*$')
print p.search("error123abc234")
print p.search("error123ab234")
print p.search("error123def234")
结果:
None
<_sre.SRE_Match object at 0x7f87973eccf0>
None
例子3: 匹配“重置密码”或“密码重置”等,同时不匹配“重置密码后,密码是什么”这样的
p = re.compile('.*?(改|修改|重置|设置|忘)+.*?(密码)+((?!是|查|为|看).)*$|(密码)+.*?(改|修改|重置|设置|忘)+((?!是|查|为|看).)*$')