Python – 正则匹配

Posted qingaoaoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = ["xiaowang@163.com", "xiaowang@163.comheihei", "xiaowang@qq.com"]
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)

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

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

 技术图片

技术图片

使用正则表达式匹配出<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 – 正则匹配的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式

python基础学习(十三)

python基础学习笔记(十三)

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

python 正则表达式 re模块基础

python中的re模块