python的正则表达式

记录:备忘录。
名词:
        正则表达式,Regular Expression。
        正则表达式,使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
1.正则表达式配关键字符

序号字符功能类别
1.匹配任意1个字符(除了\n)表示字符
2[ ]匹配[ ]中列举的字符表示字符
3\d匹配数字,即0-9表示字符
4\D匹配非数字,即不是数字表示字符
5\s匹配空白,即 空格,tab键表示字符
6\S匹配非空白表示字符
7\w匹配单词字符,即a-z、A-Z、0-9、_表示字符
8\W匹配非单词字符表示字符
9*匹配前一个字符出现0次或者无限次,即可有可无表示数量
10+匹配前一个字符出现1次或者无限次,即至少有1次表示数量
11?匹配前一个字符出现1次或者0次,即要么有1次,要么没有表示数量
12{m}匹配前一个字符出现m次表示数量
13{m,}匹配前一个字符至少出现m次表示数量
14{m,n}匹配前一个字符出现从m到n次表示数量
15^匹配字符串开头;除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合表示边界
16$匹配字符串结尾表示边界
17\b匹配一个单词的边界表示边界
18\B匹配非单词边界表示边界
19|匹配左右任意一个表达式表示边界
20(ab)将括号中字符作为一个分组匹配分组
21\num引用分组num匹配到的字符串匹配分组
22(?P<name>)分组起别名匹配分组
23(?P=name)引用别名为name分组匹配到的字符串匹配分组

2.python的正则表达式例子

import re

#匹配测试
ret = None
ret = re.match("[A-Z][a-z]*","Awertyuiopoper")
ret = re.match("[a-zA-Z_]+[\w_]*","yao最美的人")
ret = re.match("[1-9]?[0-9]?[0-9]","5678")
ret = re.match("[a-zA-Z0-9_]{8}","8a765c4321")
ret = re.match("[a-zA-Z0-9_]{8,20}","1qazxsw23edcvfr4")
ret = re.match("[a-zA-Z0-9_]{8,20}","1qazxsw")
ret = re.match("[1-9]?\d$|100","53")
ret = re.match("[1-9]?\d$|100","10")
ret = re.match("\w{4,20}@(163|126|qq)\.com", "zhangbeizhen18@163.com")
ret = re.match("<[a-zA-Z]*>\w*</[a-zA-Z]*>", "<html>yaoGG</html>")
try:
    ret = ret.group()
    print(ret)
except:
    print("匹配不正确")

#匹配搜索
ret = re.search(r"\d+", "zhangbeizhen阅读次数为 157659")
try:
    ret = ret.group()
    print(ret)
except:
    print("匹配不正确")

#匹配别名
try:
    ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>yao</html>").group()
    print(ret)
except:
    print("匹配不正确")

try:
    ret = re.match(r"<([a-zA-Z]*)>(\w*)</\1>", "<html>yaoZZ</html>").group()
    print(ret)
except:
    print("匹配不正确")

try:
    ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", "<html><p>www.zhangbeizhen18.com</p></html>").group()
    print(ret)
except:
    print("匹配不正确")

try:
    ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>",
                   "<html><p>www.zhangbeizhen18.cn</p></html>").group()
    print(ret)
except:
    print("匹配不正确")


#匹配单个字符串
info="zhangbeizhen18的博客"
try:
    result = re.match("zhangbeizhen18", info).group()
    print(result)
except:
    print("匹配不正确")


# 匹配列表
ret = re.findall(r"\d+", "python = 985, c = 211, c++ = 111")
try:
    print(ret)
except:
    print("匹配不正确")

# 匹配替换
ret = re.sub(r"\d+", '985', "python = 211")
try:
    print(ret)
except:
    print("匹配不正确")

#匹配分组
ret = re.split(r":|&","info:xiaoZhang 33&shandong")
try:
    print(ret)
except:
    print("匹配不正确")

#匹配邮箱
pattern = re.compile("[\w]{4,20}@163\.com")
search = pattern.search('zhangbeizhen18@163.com$')
try:
    print(search.group(0))
except:
    print("匹配不正确")

# 匹配网址
info="http://www.zhangbeizhen18.com:8080/workInfo/work.html"
try:
    pattern = re.compile(r"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)")
    result = pattern.search(info)
    print(result.group())
except:
    print("匹配不正确")

info="http://www.zhangbeizhen18.com:8080/workInfo/work.html"
try:
    result = re.match("(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)", info).group()
    print(result)
except:
    print("匹配不正确")

info="www.zhangbeizhen18.com"
try:
    result = re.match("([^/:]+)", info).group()
    print(result)
except:
    print("匹配不正确")

#匹配字符
info="I love Yao Yao."
try:
    pattern = re.compile(r"\b([a-z,A-Z]+) \1\b")
    result = pattern.search(info)
    print(result.group())
except:
    print("匹配不正确")

# \B 非单词边界匹配
info="zhang beizhen"
try:
    pattern = re.compile(r"\Beizhe\B")
    result = pattern.search(info)
    print(result.group())
except:
    print("匹配不正确")

# \b 匹配一个单词边界,即字与空格间的位置。
info="zhang beizhen"
try:
    pattern = re.compile(r"\bbeizhen\b")
    result = pattern.search(info)
    print(result.group())
except:
    print("匹配不正确")

# ^匹配开头,$ 匹配结尾
info="第 50"
try:
    result = re.match("^第 [1-9][0-9]{0,1}$", info).group()
    print(result)
except:
    print("匹配不正确")

# .匹配一个字符,* 匹配任意字符
info="<h1>zhangbeizhen18的博客</h1>"
try:
    result = re.match("<\w+?>", info).group()
    print(result)
except:
    print("匹配不正确")

info="<h1>zhangbeizhen18的博客</h1>"
try:
    result = re.match("<.*>", info).group()
    print(result)
except:
    print("匹配不正确")

# 匹配数字
info="第 50"
try:
    result = re.match("^第 [1-9][0-9]{0,1}", info).group()
    print(result)
except:
    print("匹配不正确")

try:
    result = re.match("[1-9][0-9]{0,1}", "5678").group()
    print(result)
except:
    print("匹配不正确")

try:
    result = re.match("[1-9][0-9]?", "5678").group()
    print(result)
except:
    print("匹配不正确")

try:
    result = re.match("[1-9][0-9]*", "5678").group()
    print(result)
except:
    print("匹配不正确")

try:
    result = re.match("[0-9]{1,2}", "5678").group()
    print(result)
except:
    print("匹配不正确")

# ? 问号代表前面的字符最多只可以出现一次(0次、或1次)
try:
    result = re.match("beizhe?n", "beizhn").group()
    print(result)
except:
    print("匹配不正确")

# * 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)
try:
    result = re.match("beizhe*n", "beizheeeen").group()
    print(result)
except:
    print("匹配不正确")

# + 号代表前面的字符必须至少出现一次(1次或多次)
try:
    result = re.match("beizhe+n", "beizhen").group()
    print(result)
except:
    print("匹配不正确")

try:
    result = re.match("beizhe+n", "beizhen").group()
    print(result)
except:
    print("匹配不正确")


以上,感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值