python 正则表达式(三)字符串处理

import re
'''
1)切割字符串时,不确定空格的个数,如:"sun today   mood     eath"
'''
str1 = "sun today   mood     eath"
print(re.split(r" +",str1))

'''
2)字符串的替换和修改
def sub(pattern, repl, string, count=0, flags=0)
def subn(pattern, repl, string, count=0, flags=0)
pattern:正则表达式规则,符合的则被替换
repl:用来替换后生成的新字符串
string:目标字符串
count:最多替换次数
功能:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。
      可以指定替换的次数,如果不指定,替换所有的匹配字符串
区别:sub返回一个替换后的字符串;subn返回一个元组,第一个元素是替换后的字符串,第二个元素的替换的次数
'''
str2 = "sun sum sss dse fds sub"
print(re.sub(r"su.","beReplace",str2))
print(re.subn(r"su.","beReplace",str2))

'''
3)分组:
概念:除了简单的判断是否匹配之外,正则表达式还有提取字串的功能。
用()表示的就是提取分组
为分组命名:(?P<name>)  查询分组-->group("name")    -->可有可无
'''
#分组-->提取QQ邮箱
str3 = "admin:[email protected]"
str4 = "账号:[email protected]"
m1 = re.search(r"\w{1,10}@(\w{2,10})\.com",str3)
m2 = re.search(r"\w{1,10}@(\w{2,10})\.com",str4)
'''
这里需要匹配.com,而.本身是正则表达式的一个元字符,可以匹配除换行符以外的任意字符
 使用 \. 将 . 转义字符成普通字符使用
'''
#group(0)是匹配得到的字符串,我这里是要提取邮箱
print(m1.group(0))
print(m2.group(0))

#group(1)是我们使用()设置的分组,我这里把邮箱特征分组,便于后期处理
print(m1.group(1))
print(m2.group(1))

'''
4)编译:将正则表达式编译成一个对象。
1 编译正则表达式,如果正则表达式本身不合法,会报错(检验功能)
2 编译后的正则表达式作为一个对象,可以被重复使用

编译正则表达式的函数:
def compile(pattern, flags=0)
pattern:要编译的正则表达式
'''
re_mailProcess = re.compile(r"\w{1,10}@(\w{2,10})\.com")
m3 = re_mailProcess.search(str3)
print(m3.group(0))

猜你喜欢

转载自blog.csdn.net/weixin_40938748/article/details/85268917