正则表达式

# 字符	    描述
# \d	    代表任意数字,就是阿拉伯数字 0-9 这些玩意。
# \D	    大写的就是和小写的唱反调,\d 你代表的是任意数字是吧?那么我 \D 就代表不是数字的。
# \w	    代表字母,数字,下划线。也就是 a-z、A-Z、0-9、_。
# \W	    跟 \w 唱反调,代表不是字母,不是数字,不是下划线的。
# \n	    代表一个换行。
# \r	    代表一个回车。
# \f	    代表换页。
# \t	    代表一个 Tab 。
# \s	    代表所有的空白字符,也就是上面这个:\n、\r、\t、\f。
# \S	    跟 \s 唱反调,代表所有不是空白的字符。
# \A	    代表字符串的开始。
# \Z	    代表字符串的结束。
# ^	        匹配字符串开始的位置。
# $	        匹配字符创结束的位置。
# .	        代表所有的单个字符,除了 \n \r
# [...]	    代表在 [] 范围内的字符,比如 [a-z] 就代表 a到z的字母
# [^...]	跟 [...] 唱反调,代表不在 [] 范围内的字符
# {n}       匹配在 {n} 前面的东西,比如: o{2} 不能匹配 Bob 中的 o ,但是能匹配 food 中的两个o。
# {n,m}	    匹配在 {n,m} 前面的东西,比如:o{1,3} 将匹配“fooooood”中的前三个o。
# {n,}	    匹配在 {n,} 前面的东西,比如:o{2,} 不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。
# *	        和 {0,} 一个样,匹配 * 前面的 0 次或多次。 比如 zo* 能匹配“z”、“zo”以及“zoo”。
# +	        和{1,} 一个样,匹配 + 前面 1 次或多次。 比如 zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。
# ?	    和{0,1} 一个样,匹配 ?前面 0 次或 1 次。
# a|b	    匹配 a 或者 b。
# ()	    匹配括号里面的内容。

# Xiaoshuaib has 123 bananas
import re

# 贪婪匹配 从这句拿到一个数字
content1 = 'Xiaoshuaib has 123 bananas'
res_1= re.match('^Xi.*(\d+)\s.*s$', content1)
print(res_1.group(1))
# 非贪婪匹配 从这句拿到123
res_2 = re.match('^Xi.*?(\d+)\s.*s$',content1)
print(res_2.group(1))

# 如果句子里有换行直接用 re.S
content3 = """Xiaoshuaib has 123 
bananas"""
res_3 = re.match('^Xi.*?(\d+)\s.*s$',content3,re.S)
print(res_3.group(1))

# 如果不加起止符和结束符 就用re.search它会直接去扫描字符串
content4 = """Xiaoshuaib has 123 
bananas"""
res_4= re.search('Xi.*?(\d+)\s.*s',content4,re.S)
print(res_4.group(1))

# 如果有多行想获取每行的数字就用re.findall
content5 = """Xiaoshuaib has 123 bananas;
Xiaoshuaib has 456 bananas;
Xiaoshuaib has 789 bananas;
Xiaoshuaib has 000 bananas;"""
res_5 = re.findall('Xi.*?(\d+)\s.*?s;',content5,re.S)
print(res_5)

# 如果替换里面的数字就用re.sub
content6 = """Xiaoshuaib has 123 bananas;
Xiaoshuaib has 456 bananas;
Xiaoshuaib has 789 bananas;
Xiaoshuaib has 000 bananas;"""
content6 = re.sub('\d+','250',content6)
print(content6)

# 如果将匹配符封装就用re.compile
# 其实和之前res = re.match('^Xi.*?(\d+)\s.*s$',content,re.S)一样
# 只不过 compile 一下便于以后复用
content7 = "Xiaoshuaib has 123 bananas"
pattern = re.compile('Xi.*?(\d+)\s.*s',re.S)
res_7 = re.match(pattern,content7)
print(res_7.group(1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值