python2 正则匹配中文汉字数字字母

python2 re.compile匹配中文数字字母:

# -*- coding: utf-8 -*-
import re

def chineseToUnic(ch):
    # 中文字符串转unicode编码
    return ch.decode('utf-8').encode('unicode_escape')


if __name__ == "__main__":
    USERS_USERNAME = u"^[_a-zA-Z0-9\\u4e00-\\u9fa5]+$"
    pattern = re.compile(USERS_USERNAME)
    name = "对方"
    name = chineseToUnic(name)
    match = pattern.search(name)
    print("name = {} | match = {}".format(name, match))

    name = "user"
    name = chineseToUnic(name)
    match = pattern.search(name)
    print("name = {} | match = {}".format(name, match))

    name = "我user"
    name = chineseToUnic(name)
    match = pattern.search(name)
    print("name = {} | match = {}".format(name, match))

    name = "user我"
    name = chineseToUnic(name)
    match = pattern.search(name)
    print("name = {} | match = {}".format(name, match))

    name = "user我,,,,,###"
    name = chineseToUnic(name)
    match = pattern.search(name)
    print("name = {} | match = {}".format(name, match))

输出如下:

name = \u5bf9\u65b9 | match = <_sre.SRE_Match object at 0x7fe734879988>
name = user | match = <_sre.SRE_Match object at 0x7fe7348799f0>
name = \u6211user | match = <_sre.SRE_Match object at 0x7fe734879988>
name = user\u6211 | match = <_sre.SRE_Match object at 0x7fe7348799f0>
name = user\u6211\uff0c\uff0c\uff0c\uff0c\uff0c### | match = None

Process finished with exit code 0

问题追溯: 

写了一个正则表达式要匹配字符串中的两个中文,代码如下:



# coding=utf8
import re
s = '张三一'
r = re.search('[\u4e00-\u9fa5]{2}', s)
print r
结果发现不管怎么测试,r都是None。
后来发现是编码问题。
此处需要将字符串s和正则表达式都变成unicode编码方式才行,如下:
# coding=utf8
import re
s = u'张三一'
r = re.search(u'[\u4e00-\u9fa5]{2}', s)
print r
此时结果正常。估计在python3里边不用这么转换。

正则表达式:英文、中文、数字、下划线

^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$
 
1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:
^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:
^  与字符串开始的地方匹配
(?!_)  不能以_开头
(?!.*?_$)  不能以_结尾
[a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
$  与字符串结束的地方匹配

放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"
 (或者:@"^(?!_)\w*(?<!_)$"    或者  @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ "  )

2、只含有汉字、数字、字母、下划线,下划线位置不限:
  ^[a-zA-Z0-9_\u4e00-\u9fa5]+$

3、由数字、26个英文字母或者下划线组成的字符串
^\w+$

4、2~4个汉字
  @"^[\u4E00-\u9FA5]{2,4}$";

5、
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

用:(Abc)+    来分析:  XYZAbcAbcAbcXYZAbcAb

XYZAbcAbcAbcXYZAbcAb
6、
[^\u4E00-\u9FA50-9a-zA-Z_]
34555#5' -->34555#5'

[\u4E00-\u9FA50-9a-zA-Z_]    eiieng_89_   --->   eiieng_89_
_';'eiieng_88&*9_    -->  _';'eiieng_88&*9_
_';'eiieng_88_&*9_  -->  _';'eiieng_88_&*9_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值