iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >爬虫之正则表达式
  • 856
分享到

爬虫之正则表达式

爬虫正则表达式 2023-01-30 23:01:56 856人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

1.学习爬虫,为什么必须会正则表达式?    我们爬取一些网页具体内容时,只需要这个网页某个标签的一部分内容就足够,或者是这个标签的某个属性的值时,用普通的 xpath 或者CSS.selector是不能完成的,此时我们就需用到正则表达式

1.学习爬虫,为什么必须会正则表达式?
    我们爬取一些网页具体内容时,只需要这个网页某个标签的一部分内容就足够,或者是这个标签的某个属性的值时,用普通的 xpath 或者CSS.selector是不能完成的,此时我们就需用到正则表达式去匹配获取。
2.正则表达式官方简介?
    正则表达式,又称规则表达式。(在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

 1  '''
 2  正则表达式
 3  '''
 4  
 5  import re
 6  
 7  line = 'jijianXksA123'
 8 
 9 # ^a 表示匹配以a开头的字符串(只匹配一次)
10 # . 表示该字符可为任意字符(只匹配一次)
11 # * 表示前面的字符可以出现任意次(0次或多次)(多次匹配)
12 reg_str01 = '^j.*'    # 表示以j开头的字符串
13 # re.match 函数
14 # 第一个参数是匹配的格式
15 # 第二参数是要匹配的字符串
16 # 返回值为:匹配成功,返回match对象,否则返回:None
17 
18 if re.match(reg_str01,line) :
19     print("匹配成功!")  # reg_str = '^j.*'     匹配成功
20 else:
21     print("匹配失败!")  # reg_str = '^i.*'     匹配失败
22 
23 
24 # 23$ 表示匹配以23结尾的字符串(只匹配一次)
25 reg_str02 = '^j.*23$'
26 if re.match(reg_str02,line) :
27     print("匹配成功!")  # reg_str = '^j.*23$'     匹配成功
28 else:
29     print("匹配失败!")  # reg_str = '^j.*13$'     匹配失败
30 
31 
32 line01 = 'boooboaobxby'
33 # () 内的为 匹配模式,通过 group函数 可以取出匹配结果
34 # 正则表达式贪婪匹配模式:从后面(右边)开始匹配
35 reg_str03 = '.*(b.*b).*'
36 test01 = re.match(reg_str03,line01)
37 if  test01:
38     print(test01.group(1))      # result : bxb
39 else:
40     print("匹配失败!")
41 
42 # 正则表达式非贪婪匹配模式:从前面(左边)开始匹配
43 # ? : 表示从左边开始匹配,匹配到第一个符合模式的内容,即进入模式
44 #
45 reg_str03 = '.*?(b.*b).*'   # 半贪婪匹配
46 reg_str04 = '.*?(b.*?b).*'  # 非贪婪匹配
47 test01 = re.match(reg_str03,line01)
48 test02 = re.match(reg_str04,line01)
49 if  test01 and test02:
50     print(test01.group(1))      # result : boooboaobxb
51     print(test02.group(1))  # result : booob
52 else:
53     print("匹配失败!")

 

 1  import re
 2  line01 = 'boooboaobcxby'
 3  
 4  def regtest(reg_str,line = line01):
 5     test = re.match(reg_str, line)
 6     if test:
 7         print(test.group(1))
 8     else:
 9         print("匹配失败!")
10 
11 # + :表示前面的字符,至少出现一次
12 reg_str04 = '.*(b.+b).*'  # (b.+b)表示b与b之间至少有一个字符
13 regtest(reg_str04)      # result : bcxb
14 
15 # {n} : 控制前面字符出现次数
16 # a{2} : 表示a出现两次
17 # b{3,4} : 表示b至少出现3次,最多出4次
18 # c{4,} : 表示c至少出现4次
19 reg_str05 = '.*(b.{2}b).*'  # (b.{2}b)表示匹配到的b与b之间,只有两字符
20 reg_str06 = '.*(b.{3,4}b).*'  # (b.{3,6}b)表示匹配到的b与b之间,至少有3个字符,至多有4个字符
21 reg_str07 = '.*(b.{4,}b).*'  # (b.{8,}b)表示匹配到的b与b之间,至少有4个字符
22 regtest(reg_str05)   # result : bcxb
23 regtest(reg_str06)   # result : boaob
24 regtest(reg_str07)   # result : boaobcxb
25 
26 # | :表示 或
27 # (abc|123) : 表示匹配到 abc 或者 123,都算匹配成功
28 reg_str08 = '.*(boo|abc)'
29 reg_str09 = '.*(abc|boo)'
30 regtest(reg_str08)   # result : boo
31 regtest(reg_str09)   # result : boo
32 
33 # [] : 表示 里面包含的内容都可以进行匹配,包含内容只有表面字符含义
34 # [abcd] : 表示 只要这个字符为 a/b/c/d中的一个都可以匹配成功
35 # [0-9] : 表示 只要这个字符在 0-9 这个区间内,都可以匹配成功
36 # [^x] : 表示匹配 字符不为 x
37 line02 = '电话号:15573563467'
38 reg_str10 = '.*(1[3458][0-9]{9}).*'
39 reg_str11 = '.*(1[3458][^1]{9}).*'
40 regtest(reg_str10,line02)   # result : 15573563467
41 regtest(reg_str11,line02)   # result : 15573563467
42 
43 # \s 表示匹配空格,匹配一次
44 # \S 表示匹配不是空格的字符,匹配一次
45 # \w 表示匹配 A-Z、0-9、_ 中的容易字符,匹配一次
46 # \W 与 \w 相反
47 # \d 表示数字
48 # [\u4E00-\u9FA5] : 表示所有汉字,unicode 编码
49 
50 def regtest_test(reg_str,line = line01):
51     test = re.match(reg_str, line)
52     if test:
53         print(test.group(1)+':'+test.group(2)+'-'+test.group(3)+'-'+test.group(4))
54     else:
55         print("匹配失败!")
56 
57 # 简单实例
58 str01 = '张三出生于1997年12月20日'
59 str02 = '李四出生于1989-01-20'
60 str03 = '王五出生于1997/2/5'
61 str04 = '赵六出生于1997.12.20'
62 str = [str01,str02,str03,str04]
63 # 提取出姓名+出生日期
64 # 匹配模式
65 reg_str12 = '(.*)出生于(\d{4})[.年/-](\d{1,2})[.月/-](\d{1,2}).*?'
66 for i in range(4):
67     regtest_test(reg_str12,str[i])
68 # result :
69 #       张三:1997-12-20
70 #       李四:1989-01-20
71 #       王五:1997-2-5
72 #       赵六:1997-12-20

注:此文来自网络,回归网络

--结束END--

本文标题: 爬虫之正则表达式

本文链接: https://www.lsjlt.com/news/180685.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 爬虫之正则表达式
    1.学习爬虫,为什么必须会正则表达式?    我们爬取一些网页具体内容时,只需要这个网页某个标签的一部分内容就足够,或者是这个标签的某个属性的值时,用普通的 xpath 或者css.selector是不能完成的,此时我们就需用到正则表达式...
    99+
    2023-01-30
    爬虫 正则表达式
  • Python爬虫之正则表达式(1)
    廖雪峰正则表达式学习笔记 1:用\d可以匹配一个数字;用\w可以匹配一个字母或数字; '00\d' 可以匹配‘007’,但是无法匹配‘00A’; ‘\d\d\d’可以匹配‘010’; ‘\w\w\d’可以匹配‘py3’; 2...
    99+
    2023-01-30
    爬虫 正则表达式 Python
  • 玩转python爬虫之正则表达式
    面对大量杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字...
    99+
    2022-06-04
    爬虫 玩转 正则表达式
  • python爬虫之解析库正则表达式
       上次说到了requests库的获取,然而这只是开始,你获取了网页的源代码,但是这并不是我们的目的,我们的目的是解析链接里面的信息,比如各种属性  @href  @class span  抑或是p节点里面的文本内容,但是我们需要一种工...
    99+
    2023-01-30
    爬虫 正则表达式 python
  • Python 爬虫学习笔记之正则表达式
    正则表达式的使用 想要学习 Python 爬虫 , 首先需要了解一下正则表达式的使用,下面我们就来看看如何使用。 . 的使用这个时候的点就相当于一个占位符,可以匹配任意一个字符,什么意思呢?看个例子就知道 ...
    99+
    2022-06-04
    爬虫 学习笔记 正则表达式
  • Pyhton爬虫知识之正则表达式详解
    目录前言1、正则表达式基础2、正则表达式的基本符号2.1 点号 “.”2.2 星号 “*”2.3 问号 “”2...
    99+
    2022-11-13
  • Python爬虫正则表达式怎么理解
    本篇内容介绍了“Python爬虫正则表达式怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!元字符^ $ * + . | {} [] ...
    99+
    2023-06-17
  • 8.网络爬虫—正则表达式RE实战
    8.网络爬虫—正则表达式RE实战 正则表达式(Regular Expression)re.Ire.Are.Sre.Mre.Xre.Lre.U美某杰实战写入csv文件: 前言:...
    99+
    2023-09-07
    正则表达式 爬虫 python
  • Golang爬虫及正则表达式的实现示例
    目录字符 数量限定 其他 爬虫 补充:正则表达式加golang爬虫爬取经典案例豆瓣top250最近学习go,爬取网站数据用到正则表达式,做个总结; Go中正则表达式采用RE2语法(具...
    99+
    2022-11-12
  • python网络爬虫精解之正则表达式的使用说明
    目录一、常见的匹配规则二、常见的匹配方法1、match()2、search()3、findall()4、sub()5、compile()一、常见的匹配规则 二、常见的匹配方法 1、...
    99+
    2022-11-12
  • python爬虫入门教程--正则表达式完全指南(五)
    前言 正则表达式处理文本有如疾风扫秋叶,绝大部分编程语言都内置支持正则表达式,它应用在诸如表单验证、文本提取、替换等场景。爬虫系统更是离不开正则表达式,用好正则表达式往往能收到事半功倍的效果。 介绍正则表达...
    99+
    2022-06-04
    爬虫 入门教程 指南
  • Python的爬虫包Beautiful Soup中用正则表达式来搜索
    Beautiful Soup使用时,一般可以通过指定对应的name和attrs去搜索,特定的名字和属性,以找到所需要的部分的html代码。 但是,有时候,会遇到,对于要处理的内容中,其name或attr的值...
    99+
    2022-06-04
    爬虫 中用 正则表达式
  • Java 之正则表达式语法及常用正则表达式汇总
    正则表达式概念: 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表...
    99+
    2023-08-18
    正则表达式 java 开发语言
  • Python全栈之正则表达式
    目录1. 正则表达式_匹配单个字符2. 正则表达式_匹配多个字符3. 正则表达式_匹配分组小提示:4. 小练习答案:总结1. 正则表达式_匹配单个字符 正则表达式在线测试: http...
    99+
    2022-11-12
  • Oracle Study之--Oracle正则表达式
    Oracle Study之--Oracle正则表达式 案例要求:建立check constraint ,要求字段输入内容必须是“00[number][number][a-z]”:通过正则表达式建立...
    99+
    2022-10-18
  • python进阶之正则表达式
    概念:   正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 目的?       给定一个正则表达式和另一个字符串,我...
    99+
    2023-01-30
    进阶 正则表达式 python
  • 正则表达式
    2019-01-16 作用 :     路由匹配,表单信息的验证  (字符串匹配) 信息提取(在大段文本中提取信息,爬虫) 字符串的提取和校验 []在中括号内匹配任意项  [^]不匹配中括号中的任意一项    [0-9]  0123......
    99+
    2023-01-30
    正则表达式
  • python模块之re(正则表达式)
    匹配模式 re.ASCII同re.A,对应的内联标识为(a),用于向后兼容。使元字符\w, \W, \b, \B, \d, \D, \s和\S仅匹配ASCII字符。该模式只在string模式下有意义,在byte模式下将被忽略。 re.DE...
    99+
    2023-01-31
    模块 正则表达式 python
  • python--模块之re正则表达式
    简介: 正则表达式本身是一个小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,我们可以通过直接调用来实现正则匹配。 正则表达式基础知识: --普通字符匹配自身 abc ----abc --元字符 . :匹...
    99+
    2023-01-30
    模块 正则表达式 python
  • 利用requests和正则表达式爬取虎扑
    正则表达式解释:符合某个模式(规则)的文本在线测试工具:https://tool.oschina.net/regex详细的正则表达式规则,可见:http://www.runoob.com/python3/python3-reg-expre...
    99+
    2023-01-31
    正则表达式 requests 爬取虎扑
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作