python爬虫之正则表达式
来源:互联网 发布:java集成测试框架 编辑:程序博客网 时间:2024/05/19 03:24
正则表达式
正则表达式就是描述字符串排列的一套规则,也被称为模式表达式,其主要用于字符串的匹配。
正则表达式基础
1.原子
原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子。
常见类别:
普通字符作为原子
非打印字符作为原子
通用字符作为原子
原子表
A.普通字符作为原子:普通字符,比如数字,大小写字母,下划线等
import repattern = "yue"string = "I love yue"result = re.search(pattern,string) #匹配print(result)B.非打印字符作为原子:指的是一些在字符串中用于格式控制的符号,比如换行符(\n),制表符(\t)等
import repattern = "\n"string = '''I love yueI love you to '''result = re.search(pattern,string)print(result)
C.通用字符作为原子:即一个原子可以匹配一类字符
\w: 匹配任意一个字母,数字或下划线
\W: 匹配除字母,数字和下划线以外的任意一个字符
\d: 匹配任意一个十进制数
\D: 匹配除十进制以外的任意一个字符
\s: 匹配任意一个空白字符
\S: 匹配除空白字符以外的任意一个其他字符
import repattern1 = "\w\dpython\w"string1 = "asdhajsfjafjkpython_456"result1 = re.search(pattern1,string1)print(result1)D.原子表: 可以定义一组地位平等的原子,然后匹配的时候会取该原子表中任意一个原子进行匹配
如[abc]py,则对应apy 或者bpy 或者cpy
[^abc]表示除了括号里面的原子均可以匹配到。
import rea="\w\dpython[abc]\w"b="\w\dpython[^abc]\w"string = "ahjkfhja546215pythonx_56"result = re.search(a,string)print(result)result = re.search(b,string)print(result)
2.元字符
正则表达式中具有 一些特殊含义的字符
(1)任意匹配元字符: .
"."匹配一个换行符以外的任意字符
import repattern = ".python..."string = "hasjkhjafhjpythonjkalk"result = re.search(pattern,string)print(result)(2)边界限制元字符 "^" "$"
" ^ "匹配字符串的开始 " $ "匹配字符串的结束
"^has"既匹配以has开头的字符串 "lk$"既匹配以lk结尾的字符串
import rea = "^has"b = "^h"c = "^a"d = "lk$"string = "hasjkhjafhjpythonjkalk"x = re.search(a,string)y = re.search(b,string)z = re.search(c,string)m = re.search(d,string)print(x)print(y)print(z)print(m)(3)限定符 " * " " ? " " + " "{n}" "{n,}" "{n,m}"
" * "匹配0次,1次或多次前面的原子 " ? "匹配0次或1次前面的原子
" + "匹配一次或多次前面的原子 {n}匹配前面的原子出现n次
" {n,} "匹配的前面的原子至少出现n次 {n,m}匹配的原子至少出现n次,最多m次
import rea = "py.*n"b = "cd{2}"c = "cs{3}"d = "cd{2,}"string = "hasjkhjacdddddddfhjpythonjkalk"x = re.search(a,string)y = re.search(b,string)z = re.search(c,string)m = re.search(d,string)print(x)print(y)print(z)print(m)(4)模式选择符 " | "
" | "可以设置多个模式,匹配时,可以选择任意一个模式
import rea = "python|dddd"string = "hasjkhjacdddddddfhjpythonjkalk"x = re.search(a,string)print(x)(5)模式单元符 " () "
"()"将一些原子组合成一个大原子用
import rea = "(dd){1,}"string = "hasjkhjacdddddddfhjpythonjkalk"x = re.search(a,string)print(x)
3.修正模式
I 匹配时忽略大小写 M 多行匹配 L 做本地化识别匹配
U 根据Unicode字符及解析字符 S 让.匹配包括换行符,即用了该模式修正后,“."匹配可以匹配任意字符
import rea = "python"string = "hgajsdjahPython_adhj"result = re.search(a,string)result1 = re.search(a,string,re.I)print(result)print(result1)
4.贪婪模式与懒惰模式
import rea="p.*y"#贪婪模式b="p.*?y"#懒惰模式string = "asphjdpython_adhy"x = re.search(a,string)y = re.search(b,string)print(x)print(y)
常见函数
1.re.match(pattern,string,flag(标志位,可以是模式修正符))从起始位置匹配
2.re.search(pattern,string,flag)全文检索并匹配
3.全局皮匹配函数:在源字符串中所有的匹配结果全部匹配出来
先使用re.compile()对正则表达式预编译
再使用findall(string)找出匹配的结果
4.re.sub(pattern(被替换掉的内容),rep(替换其他字符串的内容),string,max(代表最多替换的次数,默认全部替换))可以替换源字符串中某些字符
import rea = ".python.."b = "PYTHON"string1 = "apythonfhajpythonahkjfaskfjpythonfhfj"string2 = "pythonfhajpythonahkjfaskfjpythonfhfj"print(re.match(a,string1))print(re.match(a,string2))print("-----------")print(re.search(a,string1))print(re.search(a,string2))print("-----------")print(re.compile(a).findall(string1))print(re.compile(a).findall(string2))print("-----------")print(re.sub("python",b,string1))print(re.sub("python",b,string2))
- Python爬虫之正则表达式
- python爬虫之正则表达式
- python爬虫之正则表达式
- python爬虫之正则表达式
- Python爬虫入门七之正则表达式
- Python爬虫入门七之正则表达式
- python爬虫之神器正则表达式
- Python爬虫入门七之正则表达式
- 把玩之python爬虫正则表达式
- Python爬虫入门七之正则表达式
- Python爬虫入门七之正则表达式
- Python爬虫入门七之正则表达式
- Python爬虫入门七之正则表达式
- Python爬虫入门七之正则表达式
- python爬虫之re正则表达式库
- Python爬虫入门七之正则表达式
- python爬虫之正则表达式基础
- Python爬虫入门一之正则表达式
- 编程练习总结
- 2017年TOP100summit开幕在即, 15位大咖担任联席主席甄选最值得学习的100个研发案例
- 287. Find the Duplicate Number
- DiyCode社区客户端
- 7-10 公路村村通(30 分)
- python爬虫之正则表达式
- 【4】vim高级功能入门
- 运维之红帽工程师篇-----3. HTTP服务基础 、 网页内容访问 、 安全Web服务 、 部署动态网站
- Hibernate注解
- Android Studio快速获取SHA1或MD5的方法
- 机器学习中的范数规则化之(一)L0、L1与L2范数
- Spring Boot学习笔记(二)
- 修改 Linux VM 中单个用户最大进程数的限制
- 消费社会的丰盛与单一