Python – 正则匹配

用正则切分字符输出 [‘info‘,‘xiaoZhang‘,‘33‘,‘shandong‘]、s="info:xiaoZhang33shandong"

import re
s="info:xiaoZhang 33 shandong"
res = re.split(r":| ", s)  # |表示或,根据冒号或者空格切分
print(res)

[‘info‘, ‘xiaoZhang‘, ‘33‘, ‘shandong‘]

正则匹配以163.com结尾的邮箱

import re
email_list = ["", "", ""]
for email in email_list:
    ret = re.match("[\w]{4,20}@163.com$", email)
    if ret:
        print("%s是符合规定符合的邮件地址:%s"%(email, ret.group()))
    else:
        print("%s不符合要求"%email)

163.com是符合规定符合的邮件地址:.com
163.comheihei不符合要求
不符合要求

字符串a="not404found张三99深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三深圳"

 Python – 正则匹配

Python – 正则匹配

使用正则表达式匹配出<html><h1\>www.baidu.com</h1></html>中的地址(2)a="张明98分",用re.sub,将98替换为100

import re

source="<html><h1>www.baidu.com</h1></html>"

pat=re.compile("<html><h1>(.*?)</h1></html>")

print(pat.findall(source)[0])

 
s="张明98分"

print(re.sub(r"\d+","100",s))

正则表达式匹配中(.)和(.?)匹配区别?

答:(.)为贪婪模式极可能多的匹配内容,(.?)为非贪婪模式又叫懒惰模式,一般匹配到结果就好,匹配字符的少为主,示例代码如下

import re
s = "<html><div>文本1</div><div>文本2</div></html>"
pat1 = re.compile(r"\<div>(.*?)\</div>")
print(pat1.findall(s))
pat2 = re.compile(r"\<div>(.*)\</div>")
print(pat2.findall(s))
# 输出:[‘文本1‘,‘文本2‘];[‘文本1</div><div>文本2‘]

<divclass="nam">中国</div>,用正则匹配出标签面的内容(“中国”),其中class的类名是确定的

 Python – 正则匹配