正则表达式

import re  

一、正则表达式就是在文本中,查找符合 模式字符串的 子字符串。

 .  表示匹配任意一个有效字符

 \w 表示匹配一个有效字符(任何字母 数字 _)

 \W 表示匹配一个非有效字符

 \d 表示匹配一个数字字符

 \D 表示匹配一个非数字字符

 \s 表示匹配一个空格字符

 \S 表示匹配一个非空格字符

 [] 表示匹配一个符合中括号中范围的字符

 [^] 表示匹配一个不符合中括号中范围的字符

 s = "我今年18岁, 我喜欢6岁那年的夏天,hello"

 search 只返回第一个符合模式的结果

 result = re.search("[^a-zA-Z]", s)

 print("search的结果", result)

 findall 返回所有符合模式字符串的结果

 result = re.findall("[^a-zA-Z]", s)

 print("findall的结果", result)

 二、表示长度的模式字: 他会修饰前一个字符,表示前一个字符出现的次数

 ? 出现0次或者出现1次 [0,1]

 * 出现0次或者多次[0,无穷]

 + 出现1次或者多次[1,无穷]

 {m,n} 出现m次或者n次[m,n]

 {m,} 出现至少m次 [m,无穷]

 {,n} 出现至多n次 [0,n]

 {m} 出现m次 [m]

 s = "我今年18岁, 我喜欢6岁那年的夏天,我的电话号码是18812345678"

 正则表达式默认情况下是贪婪模式:匹配结果是尽可能多的字符

 懒惰模式:匹配结果是尽可能少的字符?如果出现在表示长度的模式字之后,贪婪模式就会被切换为懒惰模式

 result = re.search("https?", s)  字符s可以有也可以

 print("search的结果", result)

 result = re.findall("\d+?", s)  匹配一个至少有一位的数字

 print("search的结果", result)

 匹配正则语法中包含那些符号

 s = r"我今年18岁...\我喜欢6岁那年的夏天,\我的电话号码是18812345678"

 result = re.findall(r"\\", s) # 匹配一个至少有一位的数字

 print("search的结果", result)

三、表示边界匹配的符号

 ^ 表示的从字符串头开始匹配

 $ 表示匹配字符串的尾

 \b 表示单词的边界匹配:非字母字符将两段字母字符串隔开,例如:"i am,your teacher.i am so happy!"

 s = r"我今年18岁...我喜欢6岁那年的夏天,我的电话号码是18812345678"

 result = re.findall(r"^我", s)

 print(result)

 result = re.findall(r"\d+$", s)

 print(result)

 整则现在,在一篇文章中匹配其中的手机号码

 \d{11}

 分组 :

 1.使用效果将多种匹配写在一个分组中,匹配之间使用 | 进行分割

 s1 = "https://www.baidu.com"

 s2 = "http://www.baidu.com"

 result = re.search(r"https?.*", s1)

 print(result)

 result = re.search(r"https?.*", s2)

 print(result)

 result = re.search(r"(http:.*|https:.*)", s1)

 print(result)

 result = re.search(r"(http:.*|https:.*|)", s2)

 print(result)

2.提取子串

 在正则表达式中如果要引用分组中正则表达式,无需重复书写直接\数字 即可应用该数字对应的分组

s1 = "<https<://www.baidu.com"

s2 = "http://www.baidu.com"

result = re.search("(https?://)(.*)", s1)

print(result)

print(result.group(1))

print(result.group(2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值