正则
匹配字符串
正则表达式必备技能:
元字符:(单个字符)
1,普通字符
2, 特殊字符
. 匹配所有文字符号,除了换行
\w 匹配数字,字母,下划线
\d 匹配数字
\W 匹配除了数字,字母,下划线
\D 匹配除了数字
^ 匹配一句话得开头
$ 匹配一句话得结尾
[abc] 字符组 等于 \w
[^abc] 字符组 非字符组 等于 \W
3,量词
用来修饰前面得一个单位的出现次数
* 表示出现0次或者更多次
+ 表示出现一次或者更多次
? 表示出现0次或者1次
{n}表示出现n次 # \d{3} 表示出现3个数字
4 ,贪婪匹配
默认的量词(,+,?)都是尽可能多的匹配内容
5 , 惰性匹配
a.?x (匹配到a和第一个x就结束)惰性匹配,尽可能少的匹配,回溯算法
import re # 关于处理正则表达式的一个模块
lst = re.findall(r"\d+","哈哈99呵呵88嘿嘿77")
print(lst) # \d 匹配数字
#['99', '88', '77']
it = re.finditer(r"\d+","哈哈99呵呵88嘿嘿77")
for item in it:
print(item.group())
# 99
# 88
# 77
it = re.finditer(r"\d+","1哈哈哈sdasd12123ha4562哈哈哈78922")
# 默认匹配第一个数字
obj = it.__next__()
print(obj.group())
#1
# 正则遍历所有数字
for item in it:
print (item.group())
# 1
# 12123
# 4562
# 78922
## match 默认从开头匹配 只能匹配一次
result = re.match(r"\d+","123456哈哈99呵呵88嘿嘿77")
print(result.group())
# 123456
## search 查找得到第一个结果就返回
result1 = re.search(r"\d+","哈哈123456哈哈99呵呵88嘿嘿77")
print(result1.group())
# 123456
obj = re.compile(r"www\.baidu\.com")
it = obj.finditer("www.baidu.com,www.jd.com")
for item in it:
print(item.group())
# www.baidu.com
##括号括起来的内容是你想要的结果
##(?P <name>)
obj = re.compile(r"www\.(?P<gpc>baidu|jd)\.com")
it = obj.finditer("www.baidu.com,www.jd.com")
for item in it:
print(item.group("gpc"))
# baidu
#jd
obj = re.compile(r"www\.(baidu|jd)\.com")
it = obj.findall("www.baidu.com,www.jd.com")
print(it)
# ['baidu', 'jd']
from urllib.request