1.\d---十进制数字,\D---非十进制数字
提取字符串中的数字
# 提取字符串中的数字
import re
str1 = "360人最近报名"
# sub函数中第一个参数:对什么替换(\D表示非十进制数),第二个参数:替换为什么,第三个参数:操作的对象
rst = re.sub("\d", "*", str1)
print(rst)
输出结果:
***人最近报名
rst = re.sub("\d", "*", str1)
print(rst)
输出结果:
360*****
【注意】\D可用来提取字符串中的数字---将非十进制数替换为空
2.{n}恰好n次
匹配电话号码
# 匹配电话号码
str2 = "python0997-5252312hadoop"
pat = "\d{4}-\d{7}"
r = re.findall(pat, str2)
print(r)
输出结果:
['0997-5252312']
3.|或 ---模式选择符
匹配多个电话号码
# 匹配多个电话号码
str3 = "python0997-5252312hadoop010-84843212spark"
pat = "\d{4}-\d{7}|\d{3}-\d{8}" # 中间用或|
r = re.findall(pat, str3)
print(r)
输出结果:
['0997-5252312', '010-84843212']
4.{n,m}至少n,至多m次
匹配字符串中的qq号
# 匹配字符串中的qq号
str4 = "技术讨论QQ群:12345678,欢迎交流讨论"
pat = "\d{5,13}"
r= re.findall(pat,str4)
print(r)
输出结果:
['12345678']
5.[...]表示一组字符
[djt]匹配d,j或t
[a-z]匹配‘a’到'z'范围内的任意小写 字母字符
6.[^...]匹配不在[ ]中的字符
[^djt]匹配除'd,'j'或't'之外
7.+ 匹配前面的子表达式一次或多次
+等价于{1,}
[a-zA-Z]+ 等价于[a-zA-Z]{1,}
8.\s空白字符
[^\s] ---非空白字符
9. \S除空白字符
\S等价于[^\s]
10.(?:pattern)
匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配
()模式单元---获取这一匹配
匹配网址:
# 匹配网址
str5 = "<a href='https://www.baidu.com'>百度</a>"
pat = "[a-zA-Z]+://[^\s]*(?:.com|.cn|.org)"
r = re.findall(pat, str5)
print(r)
输出结果:
['https://www.baidu.com']
11.^开始位置
12.$结束位置