【Python3 爬虫】07_正则表达式(原子)
原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成。
原子分类
1.普通字符作为原子
普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符、所有数字等。例如,a——z、A——Z、0——9。
#-*- codingn:utf-8 -*- import re pattern = 'lo' String = "I love you"
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String) print("普通字符作为原子的结果:%s"%Result)
运行结果

2.一些特殊字符和元字符作为原子
任何一个符号都可以作为原子使用,但如果这个符号在正则表达式中有一些特殊意义,我们就必须使用转义字符“\”取消它的特殊意义,将其变成一个普通的原子。例如,所有标点符号以及一些其他符号,双引号“””、单引号“’”、“*”、“+”、“.”等,如果当原子就必须像\”、\’、\+和\.这样使用。
#-*- codingn:utf-8 -*- import re
#需要转义
pattern = '\+' String = "a+b=c"
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String) print("特殊字符作为原子的结果:%s"%Result)
运行结果

3.一些非打印字符作为原子
所谓的非打印字符,是一些在字符串中的格式控制符号,例如:\n回车及\t制表符号等。例如下表所示列出了正则表达式中常用的非打印字符及其含义。
#-*- codingn:utf-8 -*- import re pattern = '\n' String = """zhang
san"""
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String) print("非打印字符作为原子的结果:%s"%Result)

4.使用“通用字符类型”作为原子
前面介绍的不管是打印字符还是非打印字符作为原子,都是一个原子只能匹配一个字符。而有时我们需要一个原子可以匹配一类字符,例如,匹配所有数字不是一个数字,匹配所有字母而不是一个字母,这时就要使用“通用字符类型”了。
| 字母 | 意义 |
| /w | 匹配任意一个字母、数字或者下划线 |
| /W | 匹配除字母、数字和下划线意外的任意一个字符 |
| /d | 匹配仍以一个十进制数 |
| /D | 匹配除十进制数意外的任意一个其他字符 |
| /S | 匹配除空白字符意外的任意一个其他字符 |
| /s | 匹配任意一个空白字符 |
#-*- codingn:utf-8 -*- import re pattern ='\who\w' String = "wo shi who23"
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String) print("通配符作为原子的结果:%s"%Result)
运行结果:

5.原子表
代表某一类的原子太多了,系统不能全都给提供出来,例如数字中的奇数(1、3、5、7、9、)、字母中的元音字母(a、e、i、o、u)等。所以就需要我们可以自己定义出特定的“类原子”,使用原子表“[]”就可以定义一组彼此地位平等的原子,且从原子表中仅选择一个原子进行匹配
在Python中,原子表由[]表示,比如[xyz],就是一个原子表,这个原子表中定义了3个原子,这3个原子的地位平等。
#-*- codingn:utf-8 -*- import re pattern1 ='\wf[gj]\w'
pattern2 ='\wf[^gj]\w'
pattern3 ='\wf[gj]\W' String = "abcdefgjikdlfk"
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result1 = re.search(pattern1,String)
Result2 = re.search(pattern2,String)
Result3 = re.search(pattern3,String) print("pattern1:%s"%Result1)
print("pattern2:%s"%Result2)
print("pattern3:%s"%Result3)
运行结果:

【Python3 爬虫】07_正则表达式(原子)的更多相关文章
- 笔趣看小说Python3爬虫抓取
笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...
- Python3爬虫系列:理论+实验+爬取妹子图实战
Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...
- python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题
当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...
- python 3.x 爬虫基础---正则表达式
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...
- Python3 爬虫之 Scrapy 核心功能实现(二)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的搭建过程请参照本人的另一篇博客:Python3 爬虫之 Scrap ...
- Python3 爬虫之 Scrapy 框架安装配置(一)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的爬虫实现过程请参照本人的另一篇博客:Python3 爬虫之 Scr ...
- python3爬虫--反爬虫应对机制
python3爬虫--反爬虫应对机制 内容来源于: Python3网络爬虫开发实战: 网络爬虫教程(python2): 前言: 反爬虫更多是一种攻防战,针对网站的反爬虫处理来采取对应的应对机制,一般需 ...
- python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用
站长资讯平台:python3爬虫系列19之随机User-Agent 和ip代理池的使用我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事. 1. 前言比如随着我们爬虫 ...
- 玩转python爬虫之正则表达式
玩转python爬虫之正则表达式 这篇文章主要介绍了python爬虫的正则表达式,正则表达式在Python爬虫是必不可少的神兵利器,本文整理了Python中的正则表达式的相关内容,感兴趣的小伙伴们可以 ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
随机推荐
- (一)Centos7安装zabbix3.4 server端
(1)环境准备 关闭firewalld和selinux systemctl stop firewalld systemctl disable firewalld #sed -ri '/^SELINUX ...
- CF 276C Little Girl and Maximum Sum【贪心+差分】
C. Little Girl and Maximum Sum time limit per test2 seconds memory limit per test256 megabytes input ...
- 1.3(Spring学习笔记)Spring-AOP
一.AOP简介 AOP面向切面编程,是将一种横向抽取机制,将多个类中需要使用的方法提取出来. 例如,这里有两个类,一个Cat,一个Dog,动物都需要吃饭睡觉,如果按照传统的思想. 给两类中都添加吃饭和 ...
- 五角数 Exercise06_01
/** * @author 冰樱梦 * 题目:五角数 * 时间:2018年下半年 * * */ public class Exercise06_01 { public static void main ...
- 关于GIT的一些注意点
往空仓库提交代码之前先将文档区的_gitignore放到项目根目录然后改名成.gitignore然后git add .gitignore以上的目的是忽略一些不应该提交GIT的文件,多人编辑工程的时候不 ...
- Mac Screen Capture Shortcuts
Here's How: To capture the entire desktop, press Command-Shift-3. The screen shot will be automati ...
- Android App升级Intent
点击“更新检查”,自动下载最新版本安装包,然后开始安装,进入安装界面后很快闪退. 在这两天的适配中,发现这样一个问题,即:在升级覆盖安装软件时,程序能进入安装的界面,但会很快闪退.经过多次尝试,终于找 ...
- canvas的一些问题记录
canvas当被设置width时,原来绘制的内容,将会清空.
- 百度地图API的事件处理:覆盖物的如何阻止冒泡
百度地图,为了让事件使用的更方便,进行一层封装 详情可以看官方的文档 http://developer.baidu.com/map/jsdevelop-5.htm 主要的修改点: 1. 使用事件代理. ...
- 连接sqlexpress
sqlexpress在visualstudio安装时可选择安装. 数据源添加 localhost\sqlexpress window身份认证即可.