这次是用正则表达式抓取re信息,固定匹配含有特殊意义的符号。
下面是一些基础的元字符和匹配的相关信息
\w | 匹配数字字母和下划线 |
\s | 匹配任意换行符 |
\d | 匹配任意数字 |
\n | 匹配换行符 |
\t | 匹配制表符 |
\W | 匹配非数字字母和下划线 |
\D | 匹配非数字 |
import re
#findall 匹配字符串所有的符合正则的内容
lst = re.findall(r"\d+",'我的电话是:10086,我同学号码是:10010')
print(lst) #['10086', '10010']
#finditer :匹配字符串所有内容【返回的是迭代器】
it = re.finditer(r'\d+','我的电话是:10086,我同学号码是:10010')
for i in it:
print(i.group()) #从迭代器中拿数值的函数group #10086
#search 找到一个结果就返回,返回的是match对象,拿数据得用group()
s = re.search(r'\d+','我的电话是:10086,我同学号码是:10010')
print(s.group()) #10010
#match 从头开始匹配,
m = re.match(r'\d+','我的电话是:10086,我同学号码是:10010')
#print(m.group()) #10086
#预加载正则,
obj = re.compile(r'\d+')
ret = obj.finditer('我的电话是:10086,我同学电话是:10010')
for it in ret:
print(it.group())
ret = obj.findall('呵呵哒,我就不信你不换我100000000000')
print(ret) #['100000000000']
剩下的量词是需要重点了解的,也不多
量词:* 重复零次或者很多次 .* 贪婪匹配 .*?惰性匹配
贪婪匹配顾名思义:筛选整个需要筛选的信息,匹配到最后一次出现关键信息的位置事例
obj = re.compile('.*游戏')
test = "你昨天玩的什么游戏,我也想来玩游戏,可是大部分的游戏我都不会。"
print(obj.finditer(test))
#你昨天玩的什么游戏,我也想来玩游戏,可是大部分的
惰性匹配也叫非贪婪匹配,在于先完全遍历整个信息,然后回溯到最先发现的地方进行匹配。
obj = re.compile('.*游戏')
test = "你昨天玩的什么游戏,我也想来玩游戏,可是大部分的游戏我都不会。"
print(obj.finditer(test))
#你昨天玩的什么游戏
就是正则表达式的一些基本内容。
s = '''
<div class='fa'><span id='1'>贝多芬</span></div>
<div class='fsg'><span id='2'>都是</span></div>
<div class='dgd'><span id='3'>好的好地方</span></div>
<div class='sgh'><span id='4'>告诉各位</span></div>
<div class='nvx'><span id='5'>发光</span></div>
'''
obj = re.compile(r"<div class='(?P<id>.*?)'><span id='\d+'>(?P<asa>.*?)</span></div>",re.S) #re.S 让.能匹配换行符
result = obj.finditer(s)
for i in result:
print(i.group('asa'))
print(i.group('id'))
'''贝多芬
fa
都是
fsg
好的好地方
dgd
告诉各位
sgh
发光
nvx'''
这是正则表达式的使用发放,在一段你想要寻找的内容中找到限定的地方, 然后选取用(?P<标记字符>.*?)来标记,紧接着在下面需要输出的时候用i.group(’限制字符‘)输出即可。