爬虫4-正则表达式及Python的re模块

正则表达式语法:

# -*- coding: utf-8 -*-
元字符:具有固定含义的特殊符号
常用元字符:(一般一次匹配一个字符)
. 匹配除换行符以外的任意字符
\w 匹配字母数字或下划线
\s 匹配任意的空白符
\n 匹配一个换行符
\t 匹配一个制表符

^ 匹配字符串的开始
$ 匹配字符串的结尾

\W 匹配非字符或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

量词:控制前面的元字符出现的次数

\d* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

贪婪匹配和惰性匹配
.*  贪婪匹配
.*? 惰性匹配  匹配最少

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 20 23:10:49 2021@author: WLH
"""
import re# findall 匹配字符串中所有的符合正则的内容 返回的是列表
'''
lst = re.findall("\d+", "我的电话号是10086")
print(lst) #['10086']
lst = re.findall("\d+", "我的电话号是10086,我朋友电话号是10010")
print(lst) #['10086', '10010']
'''# finditer  匹配字符串中所有的内容 返回的是迭代器
'''
it = re.finditer("\d+", "我的电话号是10086,我朋友电话号是10010")
# for i in it:
#     print(i)
for i in it:print(i.group())  
#输出结果
# 10086
# 10010
'''# search 找到一个就返回 返回的结果是match对象,拿数据需要.group()
'''
s = re.search("\d+", "我的电话号是10086,我朋友电话号是10010")
print(s.group()) #10086
'''# match 是从头开始匹配
'''
s = re.match("\d+", "我的电话号是10086,我朋友电话号是10010")
print(s)  # 空
s = re.match("\d+", "10086,我朋友电话号是10010")
print(s)  # 10086
'''# 预加载正则表达式
'''obj = re.compile("\d+")
ret = obj.finditer("我的电话号是10086,我朋友电话号是10010")
for i in ret:print(i.group())
'''
'''输出结果:
10086
10010'''
'''
ret = obj.findall("呵呵哒,我就不信你不还我100000000")
print(ret)
'''
'''输出结果:
['100000000']'''s="""
<div class='jay'><span id='1'>郭麒麟</span></div>
<div class='jj'><span id='2'>宋轶</span></div>
<div class='jolin'><span id='3'>大聪明</span></div>
<div class='sylar'><span id='4'>范思哲</span></div>
<div class='tory'><span id='5'>胡说八道</span></div>
"""'''
obj = re.compile("<div class='.*?'><span id='\d'>.*?</span></div>",re.S)
#re.S能匹配换行符
result = obj.finditer(s)
for i in result:print(i.group())
'''
'''
obj = re.compile("<div class='.*?'><span id='\d'>(?P<wahaha>.*?)</span></div>",re.S)
#re.S能匹配换行符
result = obj.finditer(s)
for i in result:print(i.group("wahaha"))
'''
obj = re.compile("<div class='.*?'><span id='(?P<id>\d')>(?P<wahaha>.*?)</span></div>",re.S)
result = obj.finditer(s)
for i in result:print(i.group("wahaha"))print(i.group("id"))

正则补充:

import re
pat = re.compile("AA")  # AA为正则表达式 用来去验证其他的字符串
# m = pat.search("CBA")  # search 后的字符串 是被校验的内容
# print(m)
# m = pat.search("AACBAA")  # search 后的字符串 是被校验的内容  只查找第一个
# print(m)# m = re.search("AA","AASS") # 前面的字符串为规则 后面的为被校验的对象
# print(m)# print(re.findall("a","ASDaDFGAa")) # 前面的字符串为规则 后面的为被校验的对象
# print(re.findall("[A-Z]","ASDaDFGAa")) # 前面的字符串为规则 后面的为被校验的对象# sub 替换
# print(re.sub("a","A","abcdcasd"))  # 找到a用A代替 在第三个字符串中寻找a# 建议在正则表达式中,被比较的字符串中加上r,不要担心转义字符的问题
a = r"\aaa-\'"
print(a)  # \aaa-\'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos sudo不能运行_如何在Linux中配置sudo访问权限

Linux 系统中 root 用户拥有 Linux 中全部控制权力。Linux 系统中 root 是拥有最高权力的用户&#xff0c;可以在系统中实施任意的行为。如果其他用户想去实施一些行为&#xff0c;不能为所有人都提供 root 访问权限。因为如果他或她做了一些错误的操作&#xff0c;没有办法去纠…

html文件中文在浏览器中显示乱码问题解决

利用浏览器打开html文件时&#xff0c;中文显示乱码&#xff0c;如下是原文件的内容 1 <html> 2 <head> 3 <title>狗熊王</title> 4 </head> 5 6 <body> 7 <p>狗熊王…

highscore软件_软件|标准物质PDF卡片查找HighScore

有宝物的柜子实用、有趣、干货2019.5.15 前面&#xff0c;我们介绍了Jade软件|MDI Jade 安装包、安装教程、使用手册软件|CasaXPS安装包、安装教程、基本操作&#xff01;今天分享↓↓↓HighScore的安装与简单使用(如有侵权&#xff0c;联系后台删除&#xff01;)第一部分&am…

爬虫5-BeautifulSoup模块简解

1、html标记语言了解 <html> <meta http-equiv"Content-Type"content"text/html;charsetutf-8"> <h1>我的祖国</h1> <h1 align"center">我的祖国</h1> # h1 标签 # align 属性 # center 属性值 <标签 …

js图片转二进制流_V8是如何执行一段JS代码的?

汇编器 编译器 解释器解释执行和解释执行什么是V8&#xff1f;V8执行Js代码的过程汇编器 编译器 解释器众所周知&#xff0c;计算机只能理解机器语言&#xff0c;而我们平时编程用的通常是高级语言&#xff0c;所以源代码通常都要经过层层转换最终变成机器语言运行。早期只有汇…

爬虫5-BeautifulSoup模块简解2

1.BeautifulSoup简解2 from bs4 import BeautifulSoup import re file open("./baidu.html",rb) html file.read() bs BeautifulSoup(html,"html.parser") # 解析内容 解析器# 1 Tag 标签及其内容&#xff1a;拿到它所找到的第一个内容 print(bs.titl…

python lxml xpath_Python/lxml/Xpath:如何找到包含特定文本的行?

例如&#xff0c;要获得一个类似以下内容的输出&#xff0c;需要什么“现金和短期投资144841 169760 189252 86743 57379”&#xff1f;或者类似“物业、厂房和设备-总价值725104 632332 571467 538805 465493”&#xff1f;在我已经通过siteshttp://www.techchorus.net/web-sc…

数据清洗-python实践

# -*- coding: utf-8 -*-import pymysql import numpy as npy import pandas as pda import matplotlib.pylab as pyl import matplotlib.pyplot as plt#导入数据 connpymysql.connect(host"127.0.0.1",user"root",passwd"123456",db"爬虫1…

mockito mock void方法_一文让你快速上手 Mockito 单元测试框架

前言在计算机编程中&#xff0c;单元测试是一种软件测试方法&#xff0c;通过该方法可以测试源代码的各个单元功能是否适合使用。为代码编写单元测试有很多好处&#xff0c;包括可以及早的发现代码错误&#xff0c;促进更改&#xff0c;简化集成&#xff0c;方便代码重构以及许…

爬虫-淘宝

import bs4 import requests import xlwt import datetime params{ user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 } date datetime.datetime.now().strftime(%Y-%m-%d) # 给文件打上时间戳…

vs winform常用函数_使用.net core3.0 正式版创建Winform程序

前阵子一直期待.net core3.0正式版本的出来&#xff0c;以为这个版本出来&#xff0c;Winform程序又迎来一次新生了&#xff0c;不过9.23日出来的马上下载更新VS&#xff0c;创建新的.net core Winform项目&#xff0c;发现并没有Winform窗体设计器。而微软目前则是通过插件的方…

VScode中编写运行C/html文件

VScode运行C程序的所需配置 VScode只是一个编辑器&#xff0c;并不自带C编译器&#xff0c;所以需要 下载mingw 下载安装版本或者压缩文件&#xff0c;解压缩后&#xff0c;配置系统的环境变量。 path中添加mingw/bin的路径 新建include变量&#xff0c;添加mingw/include的路径…

linq结果转换object_你知道Object.entries(),但你还知道有Object.fromEntries()吗?

我们得到 object.entries()&#xff0c;它转换一个object → array。但是&#xff0c;如果您想做相反的事情怎么办&#xff1f;不用再想了&#xff01; 使用 Object.fromEntries() 来array → object 。const keyValuePair [ [cow, ], [pig, ],];Object.fromEntries(keyValu…

C语言中数组越界访问造成死循环现象

大家请看这样一段代码&#xff08;工具&#xff1a;VC6.0&#xff09;&#xff1a; #include <stdio.h> int main(int argc, char *argv[]) { int i; int arr[10];/* 这里注意循环变量i与数组arr的定义顺序 */ for(i 0; i < 10; i)/* 这里越界了 */ …

java 同步锁_Java多线程:synchronized同步锁的使用和实现原理

作用和用法在多线程对共享资源进行并发访问方面&#xff0c;JDK提供了synchronized关键字来进行线程同步&#xff0c;实现多线程并发访问的线程安全。synchronized的作用主要体现在三个方面&#xff1a;(1)确保线程互斥地访问同步代码&#xff1b;(2)保证共享变量的线程可见性&…

Apache shutdown unexpectedly启动错误解决方法

xampp启动时显示的错误为&#xff1a; 9:52:41 [Apache] Attempting to start Apache app... 9:52:41 [Apache] Status change detected: running 9:52:42 [Apache] Status change detected: stopped 9:52:42 [Apache] Error: Apache shutdown unexpectedly. 9:52:42 …

java基础代码实例_基础篇:详解JAVA对象实例化过程

1 对象的实例化过程对象的实例化过程是分成两部分&#xff1a;类的加载初始化&#xff0c;对象的初始化要创建类的对象实例需要先加载并初始化该类&#xff0c;main方法所在的类需要先加载和初始化类初始化就是执行方法&#xff0c;对象实例化是执行方法一个子类要初始化需要先…

搭建webUI自动化及问题解决:Message: ‘chromedriver‘ executable needs to be in PATH.解决办法

搭建webUI自动化环境 1、conda install selenium即可。 若出现&#xff1a;Message: chromedriver executable needs to be in PATH.Please see https://sites.google.com/a/chromium.org/chromedriver/home。 报错原因&#xff1a;没有配置chrome浏览器的chromedriver 解决…

python内置输入函数_python内置函数 print()

英文文档&#xff1a;print(*objects, sep’ ‘, end’\n’, filesys.stdout, flushFalse)Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments.All non-keyword argume…

webUI自动化一元素定位

实现功能&#xff1a;自动在百度输入框输入test&#xff0c;并进行搜索 from selenium import webdriver from time import sleepdriver webdriver.Chrome() driver.get("http://www.baidu.com")input_text driver.find_element_by_id("kw") print(&quo…