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深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三深圳"
使用正则表达式匹配出<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的类名是不确定的