20170502匹配单个字符串

云ime 云ime     2022-08-29     264

关键词:

为了方便爬虫,最近学习了正则表达式,将学习的过程记录如下:

一、正则表达式的概念:

1.使用单个字符串来描述匹配一系列符合某个句子语法规则的字符串
2.是对字符串操作的一种逻辑公式
3.应用来处理文本和数据
4.表达过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功,否则匹配失败
 
二、匹配单个字符串
import re

ma = re.match(r'a','a')#匹配a字符
print(ma)
print(ma.group())

mb = re.match(r'a','b')#匹配a字符
print(mb)#匹配不到

m = re.match(r'.','c')#匹配任意字符
print(m)
print(m.group())

mz = re.match(r'[a-z]','F',re.I)#匹配a到z中的任一字符,且忽视大小写
#或者mz = re.match(r'[a-zA-Z0-9]','F',re.I) 可以匹配a-z,A-Z,0-9中的任一字符
print(mz)
print(mz.group())

mbracket = re.match(r'[\w]','[a]')#由于[...]已经被定义为匹配字符集了,所以用该方法匹配中括号里面的a不行
print(mbracket)#
mbracket1 = re.match(r'\[[\w]\]','[a]')#匹配中括号里面的a需要用该种方法
print(mbracket1)#
print(mbracket1.group())

二、匹配多个字符串

import re
ma = re.match(r'[A-Z][a-z]','Bc')
print(ma)
print(ma.group())
mb = re.match(r'[A-Z][a-z]','B')#匹配出来为None ,不能匹配单个字符了
print(mb)
mz = re.match(r'[A-Z][a-z]*','Bcdascxzdsa')# *号匹配前一字符0次或无限次
print(mz)
print(mz.group())

m99 = re.match(r'[1-9]?[0-9]','78')#匹配0-99的任一数字
m9 = re.match(r'[1-9]?[0-9]','7')#?表示出现0次或者1次
print(m9)
print(m99)
print(m99.group())

m6 = re.match(r'[0-9a-zA-Z]{6}','dsaf21')#匹配单词字符6次
m6 = re.match(r'[\w]{6}','dsaf21')#或者使用\w
print(m6)

mail = re.match(r'[\w]{6,10}@163.com','abc1234@163.com')#匹配含有6-10个字符的163邮箱
print(mail)
print(mail.group())

四、匹配字符串开头或者结尾
import re
mail = re.match(r'[\w]{6,10}@163.com','abc1234@163.com1234')
print(mail.string) #这样也是可以匹配到的

ma1 = re.match(r'^[\w]{4,10}@(163|126).com$','abc1@126.com123')#S表示必须以@163|126.com结尾
print(ma1) #这样就没法匹配到字符串了
ma2 = re.match(r'^[\w]{4,10}@(163|126).com$','abc1@122.com')
print(ma2)#122.com也不能匹配到

ma3 = re.match(r'\Aimooc[\w]*','imoocpython')# \A表示必须以 imooc 开头
print(ma3.string)
ma4 = re.match(r'\Aimooc[\w]*','iimoocpython')
print(ma4)# iimooc就没法匹配到

五、常用函数search、findall、sub、split
1.#search查找字符串中匹配到的第一次出现的位置
import re
str1 = 'imooc videonum = 1000'
print(str1.find('1000')) #find只能查找指定字符串,如果字符串改变就不能查找
info = re.search(r'\d+',str1)#\d表示查找数字
print(info.group())
2.#find 查找所有匹配,并把匹配的值返回到列表中
str2 = 'c++=100,java=90,python=80'
info_search = re.search(r'\d+',str2)
info_findall = re.findall(r'\d+',str2)
print(info_search.group(),'\n',info_findall)#search只能匹配到一个值,而findall返回一个包含所有值的列表
print(sum(int(x) for x in info_findall))#使用列表解析进行求和

3.#sub用于替换字符串 sub(pattern,repl,string,count=0,flags=0)
①#当repl为字符串时
str1 = 'imooc videonum = 1000'
str2 = 'c++=100,java=90,python=80'
info1 = re.sub(r'\d+','1001',str1)
info2 = re.sub(r'\d+','1001',str2)
print(info1,'\n',info2)

②#当repl为函数时
def add1(pipei):#定义函数
val = pipei.group()# pipei是pattern从string中匹配到的值,需要使用group来调用这个match
num = int(val)+1
return str(num)#需要返回一个str,int型不能传回字符串
info_add1 = re.sub(r'\d+',add1,str1)
print(info_add1)

info_add2 = re.sub(r'\d+',add1,str2)# sub实现的是findall的功能,能对所有匹配到的字符进行处理
print(info_add2)
4.split根据匹配到的字符串来分割字符,返回分割字符串组成的列表
split(pattern,string,maxsplit=0,flag=0)
import re
str4 = 'imooc:C C++ Java Python'
info_split1 = re.split(r':| ',str4)#将字符串str4 按:或者空格 进行分割
print(info_split1)

str5 = 'imooc:C C++ Java Python,C#'
info_split2 = re.split(r':| |,',str5)
print(info_split2)#按照冒号: 空格 或者逗号,进行分割成列表


 

匹配单个字符(代码片段)

...节中,了解到通过re模块能够完成使用正则表达式来匹配字符串本小节,将要讲解正则表达式的单字符匹配字符功能.匹配任意1个字符(除了)[]匹配[]中列举的字符d匹配数字,即0-9D匹配非数字,即不是数字s匹配空白,即空格,t... 查看详情

正则表达式——02单个字符匹配

...表达式强大的功能和灵活性,正则表达式是由字符组成的字符串,这些字符可以是文本字符(真正的文本),也可以是元字符 查看详情

3.2.2.1匹配单个字符

  最先开始是匹配单个字符。可采用集中方式做到:以一般字符、以转义的meta 字符、以.meta 字符,或是用方括号表达式: 一般字符指的是未列于POSIXBRE 于ERE 的meta 字符,包括所有文字和数字字符、... 查看详情

jpql模糊匹配单个字符

...,该怎么办?比如我要查出数据库中满足后三位是数字的字符串对于mysql来说,使用通配符%和_可以轻松解决,但是对于JPQL来说模糊查询就伤脑筋了。。。有一个方法,可以使用like查询出来以后,再在java代码里进行过滤。虽然... 查看详情

使用交替或字符类进行单个字符匹配?

】使用交替或字符类进行单个字符匹配?【英文标题】:Usingalternationorcharacterclassforsinglecharactermatching?【发布时间】:2011-06-1102:36:47【问题描述】:(注意:标题似乎不清楚——如果有人能改写一下,我完全赞成!)给定这个正... 查看详情

20170502

   应用级.so文件添加到系统:            整个系统编译生成的.so文件会自动生成并放在system/lib目录下      AMlogicT968:  & 查看详情

第二章:匹配单个字符

2.1匹配纯文本  文本:    hello,mynameisBen.Pleasevisitmywebsiteathttp://www.forta.com/.  正则表达式:    Ben  结果:    hello,mynameisBen.Pleasevisitmywebsiteathttp://www.forta.com/.再看一个例子:  文本:    hello,mynameisBen... 查看详情

javascript匹配未指定的单个字符(代码片段)

查看详情

如何使用正则表达式匹配所有数字字符和一些单个字符

...:2014-01-2400:33:42【问题描述】:如何使用正则表达式匹配字符串中的所有数字以及特定字符?到目前为止我有这个if(!s.matches("[0-9]+"))returnfalse;我不太了解正则表达式,但这匹配0-9的 查看详情

python正则表达式--匹配单个字符(代码片段)

re模块操作 在python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re,使用方法如下:#导入re模块importre#使用match方法进行匹配操作result=re.match(正则表达式,要匹配的字符串)#如果上一步匹配到数据的... 查看详情

python爬虫编程思想(30):用正则表达式匹配多个字符串和任意单个字符

目录1. 匹配多个字符串2. 匹配任何单个字符1. 匹配多个字符串        在前面的例子中,只是通过search方法搜索一个字符串,那么如果要搜索多个字符串呢?例如,搜索bike、car和truck。最简... 查看详情

d21_1.1_正则表达式_单个字符匹配

#### re.findall 找到所有与正则表达式相匹配的字符串语法:lst=re.findall(正则表达式,字符串)#(1)预定义字符集#d匹配数字#D匹配非数字#w匹配字母或数字或下划线(正则函数中,支持中文的匹配)#W匹配非字母或数字或下划线#s匹配任... 查看详情

re模块+面向对象

re模块re:其实就是带有特殊语法的字符串语法:单个字符和多个字符  单个字符: d是匹配所有的数字D是匹配所有的非数字s是所有的换行符,制表符,空白等,回车符S是所有费换行符,空白和制表符等w字母数字下划... 查看详情

基础正则表达式

*  匹配前一个字符任意次.  匹配除换行符外的任意单个字符^  匹配行首$  匹配行尾[]  匹配中括号内的任意单个字符,如[0-9a-zA-Z]匹配任意数字字母,[中华人民共和国]匹配“中化人民共和国”中的任意单个汉字[^]... 查看详情

linux的基本命令格式如何?linux下经常使用的通配符都有哪些

...[:punct:],[:lower:],[:upper:],[:digit:],[:alnum:]等等。* 匹配任意长度的任意字符?匹配任意单个字符[]匹配制定范围内的单个字符[^]匹配制定范围外的单个字符[:space:]匹配单个空白字符[:punct:]匹配单个标点符号字符[:lower:]匹配单... 查看详情

正则表达式:如何在捕获单个组时匹配整个字符串 [重复]

】正则表达式:如何在捕获单个组时匹配整个字符串[重复]【英文标题】:Regex:Howtomatchentirestringwhilecapturingindividualgroups[duplicate]【发布时间】:2019-11-0110:45:17【问题描述】:我正在尝试使用正则表达式解析此文件名中的日期。LBX8... 查看详情

正则非单个字符串,非数字下划线正则(代码片段)

匹配非单个字符串^a匹配非数字/[^0-9]+/g 比如下划线正则匹配[a-z]+(_[a-z0-9]+)+ 但是明显的我们不想匹配R.string. 查看详情

41正则中匹配多个字符串匹配任意单个字符正则中使用字符串重复可选和特殊字符(代码片段)

第三课正则中匹配多个字符串#匹配多个字符串#择一匹配符号,|importres=‘Python|Ruby|Java|Swift‘m=re.match(s,‘PythonRuby‘)print(m)#<re.Matchobject;span=(0,6),match=‘Python‘>m=re.search(s,‘IlovePython.‘)print(m)#<re.Matchobj 查看详情