python正则匹配汉字

Python032

python正则匹配汉字,第1张

#python2使用如下即可:

# encoding: UTF-8 

import re 

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

 

def extract_number(input):

    match = re.search(u"[\u4e00-\u9fa5]+", input)

    return match.group()

if __name__ == "__main__":

    print extract_number(unicode("dss2第三季度建安大sdssd43fds",'utf8'))

    

    

    

#python3使用如下:

# encoding: UTF-8 

import re 

def extract_number(input):

    match = re.search("[\u4e00-\u9fa5]+", input)

    return match.group()

if __name__ == "__main__":

    print (extract_number("dss2第三季度建安大sdssd43fds"))

在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash '\' 。 例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符。由于正则表达式和 \ 会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上'r'。

在[]中

-长用来指定一个字符集,在这个字符集中的一个可以拿来匹配:[abc] [a-z]

-元字符在在字符集中不起作用

-在[]内用^表示补集,用来匹配不在区间范围内的字符

s=r'aba' 匹配abc

s=r't[io]p' 匹配tip或者top

s=r't[a-z0-9A-Z]'匹配t+0-9或者a-z或者A-Z

[abc]表示“a”或“b”或“c”

[0-9]表示0~9中任意一个数字,等价于[0123456789]

[\u4e00-\u9fa5]表示任意一个汉字

[^a1<]表示除“a”、“1”、“<”外的其它任意一个字符

[^a-z]表示除小写字母外的任意一个字符

line = "000我是中国人111"

# matchMe = re.match("^[\u4e00-\u9fa5]+")

matchObj = re.match(r'.*([\u4e00-\u9fa5]+).*', line, re.L)

if matchObj:

print "matchObj.group() : ", matchObj.group()

print "matchObj.group(1) : ", matchObj.group(1)

print "matchObj.group(2) : ", matchObj.group(2)

else:

print "No match!!"