【Python3 爬虫】07_正则表达式(原子)

news/2024/7/19 8:36:15 标签: python, 爬虫

原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成。

 

原子分类

 

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)

 

运行结果

image

2.一些特殊字符和元字符作为原子

任何一个符号都可以作为原子使用,但如果这个符号在正则表达式中有一些特殊意义,我们就必须使用转义字符“\”取消它的特殊意义,将其变成一个普通的原子。例如,所有标点符号以及一些其他符号,双引号“””、单引号“’”、“*”、“+”、“.”等,如果当原子就必须像\”、\’、\+和\.这样使用。

#-*- codingn:utf-8 -*-

import re
#需要转义
pattern = '\+'

String = "a+b=c"
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String)

print("特殊字符作为原子的结果:%s"%Result)

运行结果

image

 

3.一些非打印字符作为原子

所谓的非打印字符,是一些在字符串中的格式控制符号,例如:\n回车及\t制表符号等。例如下表所示列出了正则表达式中常用的非打印字符及其含义。

#-*- codingn:utf-8 -*-

import re

pattern = '\n'

String = """zhang
san"""
#re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
Result = re.search(pattern,String)

print("非打印字符作为原子的结果:%s"%Result)

image

 

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)

运行结果:

image

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)

运行结果:

image


http://www.niftyadmin.cn/n/1841737.html

相关文章

gaussdb 系统表和视图【USER_*】【08】

USER_INDEXES 存储关于本模式下的索引信息。 名称类型描述OWNERCHARACTER VARYING(64)索引的所有者INDEX_NAMECHARACTER VARYING(64)索引名字 USER_JOBS 视图存储当前用户的作业信息。 名称类型描述JOBINTEGER作业IDLOG_USEROID创建者IDPRIV_USEROID作业执行IDSTART_DATETIM…

电脑IP地址查看小技巧

电脑小常识 一、如何在cmd窗口查看ip地址 winR组合键打开cmd窗口,输入命令:ipcongif 二、在电脑中查看 1、第一步: 2、第二步 3、第三步,下滑到 这样就可以了 另外,还有个比较实用的查看所有网络状态&#xff1a…

面试考点系列【集合】(一)

集合是面试的一个重灾区,每面必问!!!废话不多说直奔主题,下面就针对具体的问题进行解释。一、常用的集合有哪些?常用的集合主要有List,Set和Map三大类。其中List和Set是实现了Collection接口&am…

MySQL客户端工具如何连接到虚拟机上搭建的数据库

一、常见误区 回顾:最近在虚拟机Linux上搭建了环境使用的是centos镜像,用到了tomcat服务器、开发的war包、数据库.sql文件,还涉及到了linux的jdk的配置与MySQL的安装等 1、误区一 上面操作都没有问题,成功进入了下面误区&#x…

gaussdb 系统表和视图【其他_*】【09】

V$SESSION 存储当前会话的所有会话信息。 名称类型描述SIDINTEGER当前活动的后台进程的OID。SERIAL#INTEGER当前活动的后台进程的序号,在GaussDB中为0。USER#OID登录此后台进程的用户的OID。USERNAMENAME登录此后台进程的用户名。 V$SESSION_LONGOPS 存储当前正在…

Jmeter插件如何监听到服务器性能指标

一、Jmeter设置 1、首先下载插件管理器 ①可以去官网下载jmeter跟插件,这里下载的方式很多,我就不在赘述了。 ②有上面蝴蝶结的代表成功安装了 ③下载成功后插件如下: ④右击“线程组”,添加“监听器”,如下图括起来…

gaussdb 系统表和视图【其他_*】【10】

标准统计视图 用于显示统计收集结果的视图。标准的统计视图请参见表1,一般不推荐使用。 视图名字描述pg_stat_activity每个服务器进程一行,显示:数据库OID 、数据库名、进程ID 、用户OID 、用户名、当前查询、当前查询等待状态、当前查询开始…

MySQL的安装、改密及远程连接

一、下载MySQL压缩包后的安装步骤 将压缩包解压到指定的目录编辑好配置文件 [mysql] #设置MySQL客户端默认字符集 default-character-setutf8[mysqld] #设置3306端口 port 3306#设置MySQL的安装目录 basedir D:\Program Files\MySQL\mysql-8.0.22-winx64#设置MySQL数据库的数…