首页 > 其他分享 >爬虫学习笔记 -- 正则表达式

爬虫学习笔记 -- 正则表达式

时间:2022-12-26 21:02:48浏览次数:44  
标签:匹配 re -- res 爬虫 正则表达式 分组 print 11a2b3c456d7e890f


0x01 match

1、从头开始匹配,只能匹配一次

import re
str="1a2b3c456d7e890f"
res=re.match('\d+',str)
print(res.group())
运行结果:1

2、通用匹配符.*?

import re
str="11a2b3c456d7e890f"
res=re.match('11a(.*?)d',str)
print(res)
运行结果:11a2b3c456d

3、常用匹配规则

\d               0到9的任何数字


\D 除0到9的数字以外的任何字符


\w 任何字母、数字或下划线(单词)


\W 除字母、数字和下划线以外的任何字符


\s 空格、制表符或换行符(空白)


\S 除空格、制表符和换行符以外的任何字符


? 匹配零次或一次前面的分组


* 匹配零次或多次前面的分组


+ 匹配一次或多次前面的分组


| 匹配多个表达式中的一个


() 使用括号创建"分组"


{n} 匹配n次前面的分组


{n,} 匹配n次或更多前面的分组


{,m} 匹配零次到m次前面的分组


{n,m} 匹配至少n次、至多m次前面的分组


{n,m}?或*?或+? 对前面的分组进行非贪心匹配


^spam 字符串必须以spam开始


spam$ 字符串必须以spam结束


. 匹配所有字符,换行符除外


\d、\w和\s 匹配数字、单词和空格


\D、\W和\S 匹配出数字、单词和空格外的所有字符


[abc] 匹配方括号内的任何字符


[^abc] 匹配不在方括号内的任何字符

0x02 search

1、任意位置开始匹配,返回第一个匹配结果

import re
str="11a2b3c456d7e890f"
res=re.search('5(.*?)d',str)
print(res.group())
运行结果:56d

0x03 findall

1、获取匹配的所有结果

import re
str="11a2b3c456d7e890f"
res=re.findall('\d{3}',str)
print(res)
运行结果: ['456', '890']

0x04 sub

1、替换匹配到的内容,将字母全部替换

import re
str="11a2b3c456d7e890f"
res=re.sub('\D','',str)
print(res)
运行结果:11234567890

0x05 compile

1、可以将正则表达式多次利用,不用重复书写

import re
str="11a2b3c456d7e890f"
str1="11a2b3c456d7e890f"
pp=re.compile('\D')
res=re.sub(pp,'',str)
res1=re.sub(pp,'',str1)
print(res,res1)
运行结果:11234567890 11234567890

0x06 声明

仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者不承担任何法律及连带责任。

欢迎关注公众号编程者吧

 

标签:匹配,re,--,res,爬虫,正则表达式,分组,print,11a2b3c456d7e890f
From: https://blog.51cto.com/u_15288375/5971000

相关文章

  • 火山中文编程 -- 封装信息框API
     ......
  • OD修改软件
    一、打开软件,查看正常运行的程序二、打开OD,拖入要调试的程序三、分析汇编代码title是"Helloworld",内存地址是0x00403000四、数据窗口跳转到该地址,快捷键ctrl+G五、修改数据......
  • JS逆向 -- 本地调试
    一、通过Fiddler抓包,找到要替换的JS文件,这里要替换的事md5.js二、新建一个md5.js文件,内容为包里的内容,为了区分,我们给他多加一个变量三、将该包,拖到AutoResponder选项卡,该打......
  • JS逆向 -- HOOK关键数据
    一、安装油猴插件​​https://ext.se.360.cn/webstore/search/tampermonkey​​二、添加新脚本三、常用代码1、name:该脚本的名字2、match:要hook的网站:一般填写http://*/*3、......
  • 子域名收集 -- Anubis
    今天给大家介绍一款子域名收集软件Anubis下载地址:https://github.com/jonluca/Anubis一、环境kalipython3二、安装过程:1、复制到本地安装包gitclonehttps://github.co......
  • ACM预备队-week8(DP2)
    1.疯狂的采药完全背包题目链接:P1616疯狂的采药-洛谷|计算机科学教育新生态(luogu.com.cn)1#include<bits/stdc++.h>2usingnamespacestd;3#defineint......
  • 3、端口
    一个服务器可以对应多个域名,同样也可以对应多个端口,比如:192.168.1.111:80192.168.1.111:82不同端口可以搭建不同网站。常见端口:HTTP协议代理服务器:80/8080/3128/8081/908......
  • 结构 Structs
    与引用类型Class不一样,结构体是一种值类型的数据结构,通过使用Struct关键字,我们可以在一个单一的变量中直接存储各种各样复杂的数据结构。语法:[访问修饰符]struct结构体......
  • 子域名收集 -- Findomain
    今天给大家介绍一款子域名收集软件Findomain下载地址:https://github.com/Edu4rdSHL/findomain/releases一、环境win10二、安装过程:直接下载三、命令进入到该目录./fin......
  • 配置httpd虚拟主机
    环境准备编译安装httpd参考虚拟主机虚拟主机有三类:相同IP不同端口不同IP相同端口相同IP相同端口不同域名相同IP不同端口yum安装文件位置:vim/etc/httpd/co......