爬虫常用正则、re.findall 使用

爬虫常用正则

爬虫经常用到的一些正则,这可以帮助我们更好地处理字符。

正则符

单字符

. : 除换行以外所有字符
[] :[aoe] [a-w] 匹配集合中任意一个字符
\d :数字  [0-9]
\D : 非数字
\w :数字、字母、下划线、中文
\W : 非\w
\s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
\S : 非空白

数量修饰

* : 任意多次  >=0
+ : 至少1次   >=1
? : 可有可无  0次或者1次
{m} :固定m次 hello{3,}
{m,} :至少m次
{m,n} :m-n次

边界

$ : 以某某结尾
^ : 以某某开头

分组

(ab)

贪婪模式

.*

非贪婪惰性模式

.*?

# 1 提取出python
‘‘‘
key = ‘javapythonc++php‘

re.findall(‘python‘,key)
re.findall(‘python‘,key)[0]
‘‘‘
# 2 提取出 hello word
‘‘‘
key = ‘<html><h1>hello word</h1></html>‘
print(re.findall(‘<h1>.*</h1>‘, key))
print(re.findall(‘<h1>(.*)</h1>‘, key))
print(re.findall(‘<h1>(.*)</h1>‘, key)[0])
‘‘‘
# 3 提取170
‘‘‘
key = ‘这个女孩身高170厘米‘
print(re.findall(‘\d+‘, key)[0])
‘‘‘
# 4 提取出http://和https://
‘‘‘
key = ‘http://www.baidu.com and https://www.cnblogs.com‘
print(re.findall(‘https?://‘, key))
‘‘‘
# 5 提取出 hello
‘‘‘
key = ‘lalala<hTml>hello</HtMl>hahaha‘   # 输出的结果<hTml>hello</HtMl>
print(re.findall(‘<[hH][tT][mM][lL]>.*[/hH][tT][mM][lL]>‘,key))
‘‘‘
# 6 提取hit. 贪婪模式;尽可能多的匹配数据
‘‘‘
key = ‘[email protected]‘                # 加?是贪婪匹配,不加?是非贪婪匹配
print(re.findall(‘h.*?\.‘, key))
‘‘‘
# 7 匹配出所有的saas和sas
‘‘‘
key = ‘saas and sas and saaas‘
print(re.findall(‘sa{1,2}s‘,key))
‘‘‘
# 8 匹配出 i 开头的行
‘‘‘
key = """fall in love with you
i love you very much
i love she
i love her
"""
print(re.findall(‘^i.*‘, key, re.M))
‘‘‘
# 9 匹配全部行
‘‘‘
key = """
<div>细思极恐
你的队友在看书,
你的闺蜜在减肥,
你的敌人在磨刀,
隔壁老王在练腰.
</div>
"""
print(re.findall(‘.*‘, key, re.S))
‘‘‘

案例题

re.findall 使用

1、re.findall 可以对多行进行匹配,并依据参数作出不同结果。

re.findall(取值,值,re.M)
    - re.M :多行匹配
    - re.S :单行匹配 如果分行则显示/n
    - re.I : 忽略大小写
    - re.sub(正则表达式, 替换内容, 字符串)

原文地址:https://www.cnblogs.com/xiangsikai/p/11251620.html

时间: 2024-10-07 14:35:17

爬虫常用正则、re.findall 使用的相关文章

基于php常用正则表达整理(下)

61        \n 匹配一个换行符.等价于 \x0a 和 \cJ.62        \r 匹配一个回车符.等价于 \x0d 和 \cM.63        \s 匹配任何空白字符,包括空格.制表符.换页符等等.等价于[ \f\n\r\t\v].64        \S 匹配任何非空白字符.等价于 [^ \f\n\r\t\v].65        \t 匹配一个制表符.等价于 \x09 和 \cI.66        \v 匹配一个垂直制表符.等价于 \x0b 和 \cK.67      

正则表达式学习和常用正则验证规则(包括用户名,密码,手机号,网址等)

正则表达式基础语法 1.1匹配不同类型的字符 字符类 匹配的字符 \d 匹配一个数字字符.等价于 [0-9]. \D 匹配一个非数字字符.等价于 [^0-9]. \w 匹配包括下划线的任何单词字符.等价于‘[A-Za-z0-9_]‘. \W 匹配任何非单词字符.等价于 ‘[^A-Za-z0-9_]‘. \s 匹配任何空白字符,包括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S 匹配任何非空白字符.等价于 [^ \f\n\r\t\v]. .(点号) 任一字符 […] 括号中的

php 常用正则

转载:http://bbs.php100.com/read-htm-tid-83266.html 1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    "^\d+$" //非负整数(正整数 + 0) 3.    "^[0-9]*[1-9][0-9]*$" //正整数 4.    "^((-\d+)|(0+))$" //非正整数(负整数 + 0) 5.    "^-[0-9]*[1-9][0

java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片

我们如果在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,常常对方的网站有defence机制,会给你的http请求返回500错误,只要是相同IP就请求不到数据,这时候我们只能去重启路由器,这样IP地址会改变,网络爬虫就能正常工作了 下面是通过发送Socket请求来模拟路由器的重启指令: protected void rebotadsl() { try { BufferedOutputStream sender = null; String url = baseURL; URL target

jQuery常用正则验证

jQuery常用正则验证  [转] 基础知识:JS中创建正则对象的方式:-使用RegExp()构造函数方式,如:var patten=new RegExp("s$");-使用正则直接量方式,如:var patten=/s$/;注意:就像字符串直接量被定义为包含在引号("")内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符:斜杠外末尾可以加正则全局标识符. 验证文字输入个数<script type="text/javascript

js 常用正则

2016-09-09 整数或者小数: ^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字: "^[0-9]*$" . 只能输入 n 位的数字: "^\d{n}$" . 只能输入至少 n 位的数字: "^\d{n,}$" . 只能输入 m~n 位的数字:. "^\d{m,n}$" 只能输入零和非零开头的数字: "^(0|[1-9][0-9]*)$" . 只能输入有两位小数的正实数: "

正则语法及常用正则

正则表达式语法 在典型的搜索和替换操作中,必须提供要查找的确切文字.这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的. 使用正则表达式,就可以: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证. 替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字. 根据模式匹配从字符串中提取一个子字符串.

PHP 常用正则汇总

平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:   "^\d+$" //非负整数(正整数 + 0)   "^[0-9]*[1-9][0-9]*$" //正整数   "^((-\d+)|(0+))$" //非正整数(负整数 + 0)   "^-[0-9]*[1-9][0-9]*$" //负整数   "^-?\d+$" //整数   "^\d+(\.\d+)?$"

.Net常用正则判断方法

原文:.Net常用正则判断方法 /// <summary> /// 判断string类型否为数字 /// </summary> /// <param name="strNumber"></param> /// <returns></returns> public static bool IsNumber(string strNumber) { string strValidRealPattern = "^