【学习打卡】第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))

https://img1.sycdn.imooc.com/62ec7b810001e09714640974.jpg

https://img4.sycdn.imooc.com/62ec7b8a0001d48d14630653.jpg

https://img3.sycdn.imooc.com/62ec7ba5000187dc14651007.jpg

https://img4.sycdn.imooc.com/62ec7bbf0001596414630893.jpg



这篇关于【学习打卡】第1天 Scrapy打造搜索引擎 正则表达式第一讲的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程