python re模块关于正则表达式

match函数:

表示从头开始匹配。


python re模块关于正则表达式_第1张图片
import re
ret = re.match('.', '\nabc',re.DOTALL)
print(ret) 

"."的含义为匹配所有字符,除了\n,第三个参数加上 re.DOTALL,表示匹配任何一个字符,包括\n。 # re.I 表示忽略大小写

import re
ret = re.match('\w', '_sdfsdf',re.ASCII)
print(ret)

"\w"表示匹配 “_”下划线,大小写所有字母,数字0-9,及所有国家的语言,加上 re.ASCII 表示只匹配ASCII编码表中对应的字符。

匹配中文字符的正则表达式:

[\u4e00-\u9fa5]

匹配多个字符的表达式:

python re模块关于正则表达式_第2张图片

注意:

import re
ret = re.match("[1-9]","0")
print(ret)
#---------------运行结果--------------------------
None

匹配失败,返回None,如果用group函数提取匹配参数会报错

import re
ret = re.match("[1-9]*","0")
print(ret)
#---------------运行结果--------------------------
<_sre.SRE_Match object; span=(0, 0), match=''>

同样匹配失败,但 * 允许匹配字符出现0次,用空字符代替。用group函数提匹配字符不会报错。返回空字符串。

表示边界:

python re模块关于正则表达式_第3张图片
import re
ret1 = re.match("[\w]{4,20}@163\.com", "[email protected]")
print(ret1)
ret2 = re.match("[\w]{4,20}@163\.com$", "[email protected]")
print(ret2)
#-------------------运行结果---------------------
<_sre.SRE_Match object; span=(0, 16), match='[email protected]'>
None

虽然 ret1 匹配成功,但原来提取的字符串并不是真正的邮箱!!(com后面带有heihei)
ret2 加上$ 保证原字符串是真正的邮箱!!!

match方法和search方法:

match从头开始匹配,search从任意位置开始匹配,都只匹配一次。

import re
pattern = re.compile('\d+')
 m = pattern.search('one12twothree34four')    这里如果使用 match 方法则不匹配
print(m.group())
#---------------------运行结果-----------------
12   匹配成功

findall方法:

import re
pattern = re.compile(r'\d+')   # 查找数字

result1 = pattern.findall('hello 123456 789')
result2 = pattern.findall('one1two2three3four4', 0, 10)

print result1
print result2
#---------------------运行结果--------------------
['123456', '789']
['1', '2']

sub方法:

import re
p = re.compile(r'(\w+) (\w+)') # \w = [A-Za-z0-9]
s = 'hello 123, hello 456'

print p.sub('hello world', s)  # 使用 'hello world' 替换 'hello 123' 和 'hello 456'
print p.sub(r'\2 \1', s)        # 引用分组

def func(m):
    return 'hi' + ' ' + m.group(2)

print p.sub(func, s)
print p.sub(func, s, 1)         # 最多替换一次
#--------------------------运行结果-----------------------------
hello world, hello world
123 hello, 456 hello
hi 123, hi 456
hi 123, hello 456

匹配分组:

python re模块关于正则表达式_第4张图片

你可能感兴趣的:(python re模块关于正则表达式)