【学习打卡】第1天 Scrapy打造搜索引擎 正则表达式第一讲
2022/8/6 3:52:43
本文主要是介绍【学习打卡】第1天 Scrapy打造搜索引擎 正则表达式第一讲,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:Scrapy打造搜索引擎(分布式爬虫)
课程章节: 爬虫基础知识回顾
主讲老师:bobby
课程内容:
今天学习的内容包括:
Python正则表达式——re正则表达式库 re.match(pattern,string)—pattern模板字符串string待匹配字符串
课程收获:
match()函数表示匹配
^m必须以m为开头
.任意字符.*匹配任意字符任意多次
3$必须以3为结尾
?非贪婪匹配
+至少匹配一次例如:b+b字符出现一次
{2}某个字符出现2次 {2,}某个字符至少出现2次 {2,5}某个字符出现2<=且<=5
| 或关系"(bobby|bobby123)"表示字符可以匹配bobby或者bobby123
[abcd] 表示字符为[]中任意一个字符都可以
例如:boobby123如果为:[qwer]oobby123则匹配失败
[0-9] 0到9之间的数字匹配一次(区间匹配)
[^1] 字符不等于1
\s 匹配空格 \S 匹配非空格
\w 相当于[A-Z a-z 0-9_汉字] \W 表示非\w(非字母非数字非_非汉字)
[\u4E00-\u9FA5]匹配汉字
\d数字
import re line = "ming123" # 待匹配字符串 # 判断某个字符串是不是等于line if line == "ming123": print("匹配成功1") # ^m必须以m为开头 .任意字符 *前面字符可以匹配任意多遍(.*表示匹配任意字符任意多次) regex_str1 = "^m.*" # 以m为开头,后面为任意多个字符都可以 if re.match(regex_str1, line): print("正则匹配成功1") # 3$必须以3为结尾 regex_str2 = ".*3$" if re.match(regex_str2, line): print("正则匹配成功2") # ? 非贪婪匹配(贪婪匹配即从最右边开始匹配) line = "boooobby123" regex_str3 = ".*(b.*b).*" # ()表示期望匹配的子串(正则表达式会将符合要求的字符串放至括号内) # 希望匹配出:boooob 结果匹配出:bb(贪婪匹配的结果) match_obj = re.match(regex_str3, line) if match_obj: print("贪婪匹配:"+match_obj.group(1)) # 期望结果:boooob 实际结果:boooobb(原因:第一个b非贪婪匹配,但是匹配第二个b的时候还是贪婪匹配) regex_str3 = ".*?(b.*b).*" match_obj = re.match(regex_str3, line) if match_obj: print("贪婪匹配:"+match_obj.group(1)) # 期望结果:boooob 实际结果:boooob(两个b都是非贪婪匹配) regex_str3 = ".*?(b.*?b).*" match_obj = re.match(regex_str3, line) if match_obj: print("非贪婪匹配:"+match_obj.group(1))
这篇关于【学习打卡】第1天 Scrapy打造搜索引擎 正则表达式第一讲的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升