在练习
python正则知识点
的时候发现好多不同寻常的知识点,一开始看不懂,专研了半天摸到一点皮毛,特此记录下来。包括:零宽断言,search小发现等。
-
关于零宽断言推荐看下:
https://blog.csdn.net/dnxbjyj/article/details/70946508
-
以下几种方法效果一样:
重要的事情说8130123456789遍,我的手机号是13512346789这个靓号,
不是15600998765,也是110或119,王大锤的手机号才是15600998765。
'''
pattern = re.compile(r"(?<=\D)1[34578]\d{9}(?=\D)")
sentences = '''
重要的事情说8130123456789遍,我的手机号是13512346789这个靓号,
不是15600998765,也是110或119,王大锤的手机号才是15600998765。
print("-----使用findall------")
m = re.findall(pattern,sentences)
print("m:",m)
n = pattern.findall(sentences)
print("n:",n)
方法2:使用finditer()
print("------使用finditer()--------")
for temp1 in re.finditer(pattern,sentences):
print('temp1:',temp1.group())
for temp2 in pattern.finditer(sentences):
print('temp2:',temp2.group())
方法3:循环使用re.search()+.end()来达到findall()的效果
print("------使用search()---------")
n = pattern.search(sentences)
while n:
print(n.group())
n = pattern.search(sentences,n.end())
s1 = “rdtfy13199889988guhijokd13199889988fghjgf13199881988dgh”
c = re.findall(‘13199889988’, s1)
print©
正则表达式的匹配规则
———————单字符串的匹配————————————
第一:’.'表
关于find和find_all()文本的使用
爬取网页中有用的信息时,通常是对存在于网页中的文本或各种不同标签的属性值进行查找,Beautiful Soup中内置了一些查找方式,最常用的是find()和find_all()函数。
1.find()函数的用法
find(name=None, attrs={}, recursive=True, text=None, **kwargs) 函数的参数:
if __name__ == '__main__':
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html.read(), 'html.parser')
re.search扫描整个字符串并返回第一个成功的匹配,若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个。re.search()方法用来精确匹配并提取第一个符合规律的对象,而对象内容的提取则使用search方法的属性group()来实现。函数语法:re.search(pattern, string, f...
使用group()方法b = 'hello good fine're.search(r'^hello\s(.*)\sfine',b).group()group() 会返回匹配此正则表达式的字符串group(1) 会返回正则表达式中第一个括号内的内容, 以此类推,group(2) 第二个括号re.search(r'^hello\s(.*)\sfine',b).group(1)* 如果需要筛选,则要在...
match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢?match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none例如:#! /usr/bin/env python# -*- coding=ut...