python学习第四天之正则表达式

正则表达式基本语法
使用正则表达式之前需要先导入re模块,此模块中的函数用于检查一个特定的字符串是否匹配给定的表达式。

  1. \d:匹配数字
import re
string = '322abc'
pattern = re.compile("\d")          #\d匹配数字 ,compile()是定义模式(规则)
result = pattern.match(string)      #match 匹配
print(result)                    	#result是一条记录<_sre.SRE_Match object; span=(0, 1), match='_'>
print(result.group())            	#result.group()显示匹配到的值

2.\D:匹配除数字以外的所有字符

import re
string = '_1abc'
pattern = re.compile("\D")           #\D匹配除数字外所有字符
result = pattern.match(string)
print(result)
print(result.group())

3.\w:匹配英文字母,数字,下划线或者汉字

import re
string = '啊_1abc'
pattern = re.compile("\w")           	#\w匹配一个英文字母,数字或者下划线,汉字
result = pattern.match(string)         
#result = pattern.match(string, re.A)   #A意思是ASCII,加上之后不能匹配汉字
print(result.group())

4.\W:匹配除数字字母汉字下划线之外的字符


import re
string = ']_1abc'
pattern = re.compile("\W")           #\W匹配除数字字母汉字下划线之外的字符
result = pattern.match(string)
print(result.group())

5.\s:匹配空白字符

import re
string = '\n_1abc'
pattern = re.compile("\s")           	#\s匹配空白字符:\n \r \t \v \f
result = pattern.match(string)
print(result.group())      				#输出也是空白字符,可以直接使用result查看
print(result)							#<_sre.SRE_Match object; span=(0, 1), match='\n'>

6.\t:匹配制表符\t

import re
string = '\t_1abc'
pattern = re.compile("\t")           #\t:匹配制表符\t
result = pattern.match(string)
print(result.group())
print(result)

7.[ ]原子表:放一组原子,彼此地位平等,且仅匹配其中

import re
string = 'pray'
#string = 'pryy'                          #只匹配原子表中的一个原子,没有匹配到则返回None
pattern = re.compile("pr[ae]y")           #[]原子表:放一组原子,彼此地位平等,且仅匹配其中一个原子
result = pattern.match(string)
print(result)
import re
string = 'pray'
#string = 'pryy'
pattern = re.compile("pr[^123]y")           #[^]排除原子表:匹配除原子表中字符以外的所有字符
result = pattern.match(string)
print(result)
import re
string = 'przy'
#string = 'pray'
pattern = re.compile("pr[a-z]y")           #[a-z]匹配a-z之间的字母,包括a和z
result = pattern.match(string)
print(result)
import re
string = 'pr4y'
#string = 'pray'
pattern = re.compile("pr[a-z0-5]y")           #[0-4]匹配0-4之间的字母,包括0和4,范围可以连起来不需要加别的符号
result = pattern.match(string)
print(result)

import re
string = '01234'
#string = 'pray'
pattern = re.compile("[a-z^[0-9]]")      #^放在[]里面的字符串中间的时候就是个字符,不代表非的意思,当需要用非时需要放到[]开头
result = pattern.match(string)
print(result)

8.*相关

import re
string = '01111234'
#string = '0001234'
#string = 'pray'
pattern = re.compile("01*")             #  *0次1次或者多次匹配其前的字符,范围只能到紧邻着他的原子
result = pattern.match(string)
print(result)

import re
string = '01111234'
pattern = re.compile("01+")             #1次或多次匹配其前的字符
result = pattern.match(string)
print(result)
#
#
import re
string = '02'
pattern = re.compile("01?")             #?:0次或1次匹配其前的字符
result = pattern.match(string)
print(result)


import re
string = 'abdj'
#string = 'xbdj'
pattern = re.compile("a|x")             #  |:匹配两个或者多个选择
result = pattern.match(string)
print(result)


import re
string = '123'
pattern = re.compile("^\d*$")             #匹配以数字开头和以数字结尾的所有字符,^ $: 限定符,^ 限定开头,$限定结尾
result = pattern.findall(string)          #findall:查找所有,返回查找结果的列表
print(result)

import re
string = '123666666666667'
pattern = re.compile("1236{3}")        #匹配其前原子3次
result = pattern.findall(string)
print(result)

import re
string = '1236666667'
pattern = re.compile("1236{3,5}")        #匹配其前原子至少3次,最多5次
result = pattern.findall(string)
print(result)

import re
string = '123666666666667'
pattern = re.compile("1236{3,}")        #匹配其前原子至少3次,无上限
result = pattern.findall(string)
print(result)

9.匹配电话号码

import re
string = '电话:010-12345678 电话:053912345678 '
pattern = re.compile("\d{3,4}-?(\d{8})")        #():表示只取()里边的结果,别的不要:只对findall有效,对match无效
result = pattern.findall(string)
print(result)

10.转义字符\陷阱

import re
a = '\\\\'
p = re.compile(r'\\\\')                #r:原始的意思,以后写正则表达式都要加r
r = p.match(a)
print(r)                                #如果不加上边那个r,输出r.group()时,匹配出来的‘\\'会自动转义成一个'\'
print(r.group())

11.一个小.的使用

import re
a = 'abc'
p =  re.compile(r'.')            #  .  :匹配除换行(\n)之外的任何一个字符
r = p.match(a)
print(r.group())

12.HTML文本匹配

import re
a = '<div>北京</div><div>南京</div>'
p =  re.compile(r'<\w+>(.*?)</\w+>')            #  .*?  :非贪婪   .*:贪婪
#p =  re.compile(r'<\w+>(.*)</\w+>')
r = p.findall(a)
print(r)

import re
a = '<div>北京</div><div>南京</yyy>'
p =  re.compile(r'<(\w+)>(.*?)</\1>')            # 匹配组:(\w+)和\1(\1表示第一个括号里边的原子)
r = p.findall(a)
print(r)

13.IP地址匹配

import re
string = '192.168.1.2 255.10.10.7 10.10.192.1'
p = re.compile(r'(\d{1,3}(\.\d{1,3}){3}).*')
r = p.match(string)
#r = p.findall(string)
print(r)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值