python正则表达式菜鸟教程_正则表达式空格怎么表示

python正则表达式菜鸟教程_正则表达式空格怎么表示正则表达式的作用:用来匹配字符串一、字符串方法字符串提供的方法是完全匹配,不能进行模糊匹配s=’helloworld’#字符串提供的方法是完全匹配,不能进行模糊匹配print(s.find(‘ll’))#2查找ll的位置,输出的是第一个l的位置ret=s.replace(‘ll’,’xx’)#替换,用ll替换为xxprint(ret)#hexxowo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

正则表达式的作用:用来匹配字符串

一、字符串方法

字符串提供的方法是完全匹配,不能进行模糊匹配

python正则表达式菜鸟教程_正则表达式空格怎么表示

s = ‘hello world’

# 字符串提供的方法是完全匹配,不能进行模糊匹配

print(s.find(‘ll’)) # 2 查找ll的位置,输出的是第一个l的位置

ret = s.replace(‘ll’, ‘xx’) # 替换,用ll 替换为 xx

print(ret) # hexxo world

print(s.split(‘w’)) # [‘hello ‘, ‘orld’] 分割:以w为界限,分割为前后两部分,存在列表中

python正则表达式菜鸟教程_正则表达式空格怎么表示

二、正则表达式

正则的方法:

1、findall() :所有结果返回到一个列表里

2、search() :返回匹配到的第一个对象,对象可以调用group()返回结果

3、match() :只在字符串开始匹配,也返回一个对象,可调用group()

findall() 方法:

1、正则表达式可以进行模糊匹配:

ret = re.findall(r’w\w{2}l’, ‘hello world’) # 匹配字符串中w开头l结尾中间有两个字符的词

# (加r,声明是原生字符串,避免字符串转义)

print(ret) # [‘worl’]

2、元字符

“.”  通配符:可以代指除换行符之外的所有字符,一个通配符只能代指任意一个字符

ret = re.findall(‘w..l’, ‘hello world’) # 匹配字符串中w开头l结尾中间有两个字符的字符串

print(ret) # [‘worl’]

“^” 上尖角号,只在字符串开始的位置匹配匹配

ret = re.findall(‘^h..o’, ‘hjklshllo’) # 只在字符串的开始位置进行匹配,匹配不上就结束,不匹配后面的内容

print(ret) # []

ret = re.findall(‘^h..o’, ‘hjkoshllo’)

print(ret) # [‘hjko’]

“$”符, 只在字符串结尾匹配

ret = re.findall(‘h..o$’, ‘hjkoshllo’)

print(ret) # [‘hllo’]

ret = re.findall(‘h..o$’, ‘hjkoshlyto’)

print(ret) # []

“*”号,重复匹配(*还可以代指0个) ,*代指的个数是0到无穷

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.findall(‘h.*o’, ‘hjkoshlytg’) # *表示重复前面多个. 既只要是以h开头o结尾的都行

print(ret) # [‘hjko’]

ret = re.findall(‘h*’, ‘hhhhjlhl’) # 匹配多个h

print(ret) # [‘hhhh’, ”, ”, ‘h’, ”, ”]

ret = re.findall(‘ah*’, ‘sdahhh’) # 贪婪匹配,既按最多的匹配

print(ret) # [‘ahhh’]

ret = re.findall(‘ah*?’, ‘sdahhh’) # 后加?变为惰性匹配,既按最少的匹配

print(ret) # [‘a’]

python正则表达式菜鸟教程_正则表达式空格怎么表示

“+”号,重复匹配,同*,但是个数最少为1个,如果是0个匹配不了,范围是1到无穷

ret = re.findall(‘ah+’, ‘asdahhhjlhl’) # 匹配以ah开头的内容

print(ret) # [‘ahhh’]

ret = re.findall(‘a+b’, ‘aaabsdbhbhabj’)

print(ret) # [‘aaab’, ‘ab’]

“?”号,匹配的范围是[0, 1]个

ret = re.findall(‘a?b’, ‘aaabsdhbhabj’) # 匹配[0, 1]个a

print(ret) # [‘ab’, ‘b’, ‘ab’]

“{}”大括号,自定义匹配的次数

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.findall(‘a{2}b’, ‘aaabhaabhab’) # 匹配2个a开头,b结尾共3位的字符

print(ret) # [‘aab’, ‘aab’]

ret = re.findall(‘a{1,3}b’, ‘aaaabfaabhhab’) # 匹配1-3个a,以b结尾的字符

# 注意:{1,3} 之间不能有空格,不能写成{1, 3}

print(ret) # [‘aaab’, ‘aab’, ‘ab’]

ret = re.findall(‘a{1, }b’, ‘aaaaaaaab’) # {1,} 什么都不加默认匹配的是正无穷

print(ret) # [‘aaaaaaaab’]

ret = re.findall(‘a{1,3}b’, ‘aaaab’) # 匹配1-3个a,贪婪匹配原则,既默认按多的匹配

print(ret) # [‘aaab’]

python正则表达式菜鸟教程_正则表达式空格怎么表示

3、字符集

取消元字符的特殊功能

[]

ret = re.findall(‘a[dc]b’, ‘adb’) # 匹配既可以是adb也可以是acb,只能2选一,注意[]里面不用逗号隔开

print(ret) # [‘adb’]

ret = re.findall(‘[a-z]’, ‘adb’) # 表示一个范围

print(ret) # ‘a’, ‘d’, ‘b’]

[]字符集还有取消元字符的特殊功能,(\ ^ -)例外:

ret = re.findall(‘[w,.]’, ‘awdb’) # .此时不是元字符,无特殊意义,而是一个普通的字符

print(ret) # [‘w’]

ret = re.findall(‘[w,,]’, ‘awdb’)

print(ret) # [‘w’]

“^”放在[]里面,表示取反:

ret = re.findall(‘[^w]’, ‘awdb’) # 匹配除W以外的所有字符

print(ret) # [‘a’, ‘d’, ‘b’]

ret = re.findall(‘[^1,4]’, ‘a1wd42b’) # 注:取反的是(1,4) 整体

print(ret) # [‘a’, ‘w’, ‘d’, ‘2’, ‘b’]

4、\ 字符集

反斜杠后跟元字符去除特殊功能;反斜杠后跟普通字符实现特殊功能

“””

\d 匹配十进制数;相当于类[0-9]

\D 匹配任意非数字字符;相当于类[^0-9]

\s 匹配任意空白字符;相当于类[\t\n\r\f\v]

\S 匹配任何非空白字符;相当于类[^ \t\n\r\f\v]

\w 匹配任意字母数字字符;相当于类[a-zA-Z0-9]

\W 匹配任何人非字母数字字符;相当于类[^a-zA-Z0-9]

\b: 匹配一个特殊字符的边界,就是单词和空格间的位置

“””

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.findall(r’\d{8}’, ‘qeqwe45454455qws1245’)

print(ret) # [‘45454455’] 只能匹配到1组,因为后面数字的不够8位

ret = re.findall(r’\d{8}’, ‘qeqwe45454455qws12456541’)

print(ret) # [‘45454455’, ‘12456541’] 匹配到2组,

ret = re.findall(r’\D{4}’, ‘qeqwe4555qws41’) # 大括号里面的数字4代表的是4个字符一组

print(ret) # [‘qeqw’]

ret = re.findall(r’\s’, ‘we4 g1’) # 匹配空白符

print(ret) # [‘ ‘]

ret = re.findall(r’\sw’, ‘ws4 wsg1’) # 匹配空白符加w

print(ret) # [‘ w’]

ret = re.findall(r’\w’, ‘w4 g1’) # 匹配空白符

print(ret) # [‘w’, ‘4’, ‘g’, ‘1’]

ret = re.findall(r’hello\b’, ‘hello, you is cat? ‘) # 匹配出你想要的且是一个单词的内容

print(ret) # [‘hello’]

python正则表达式菜鸟教程_正则表达式空格怎么表示

search() 方法:     匹配出第一个满足条件的结果

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.search(‘lo’, ‘hello, youlo? ‘) # 匹配出你想要的且是一个单词的内容

print(ret) # <_sre.sre_match object span=”(3,” match=”lo”>

print(ret.group()) # lo

ret = re.search(‘a.’, ‘asd’)

print(ret.group()) # as

ret = re.search(r’a\.’, ‘asd’) # 报错,因为被索引字符串里面没有”.”

print(ret.group()) # AttributeError: ‘NoneType’ object has no attribute ‘group’

ret = re.search(r’a\.’, ‘a.sd’)

print(ret.group()) # a.

ret = re.search(r’a\+’, ‘a+sd’)

print(ret.group()) # a+

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.search(r’\\c’, r’asd\c’) # \\不加r会报错

print(ret.group()) # \c

ret = re.search(r’\\’, r’asd\c’) # \\不加r会报错

print(ret.group()) # \

注意:加r是告诉python解释器,\\就是原生字符,不需要转义,就直接把2个\送给re模块

ret = re.search(‘\\\\’, r’asd\c’) # 等同于上面的语句,

print(ret.group()) # \c

注意:因为在python解释器里面\也是有特殊意义的,所以当传入4个\时,python解释器通过转义,变为2个\,然后传给re模块;在re模块里面,\同样是有特殊意义,所以把2个\转义为1个\,然后进行匹配

5、() :分组    |:或

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.search(‘(as)+’, r’asasd\c’) # 匹配括号里面一个组的字符,而不是单个字符

print(ret.group()) # asas

ret = re.findall(r’www.(\w+).com’, ‘www.123swd.com’) # 涉及到组时,只会把组里面的内容匹配出来

print(ret) # [‘123swd’]

ret = re.findall(r’www.(?:\w+).com’, ‘www.123swd.com’) # 加问号冒号(?:)取消组的优先级

print(ret) # [‘www.123swd.com’]

ret = re.search(‘(as)|’, r’asd35′) # 匹配括号里面一个组的字符,而不是单个字符

print(ret.group()) # as

ret = re.search(‘(as)|3′, r’asd35’) # as或3,优先匹配第一个,谁在前输出谁

print(ret.group()) # as

ret = re.search(‘(as)|3′, r’3as5e’)

print(ret.group()) # 3

python正则表达式菜鸟教程_正则表达式空格怎么表示

三、稍复杂一点儿的正则

python正则表达式菜鸟教程_正则表达式空格怎么表示

ret = re.search(r'(?P\d{3})’, ‘asdsf124c4vss7’).group(‘id’) # 给匹配到的三个数字起一个名字,叫id;?是固定写法

print(ret) # 124

# 后面匹配项只能是 ‘数字/数字或字母’ 的形式,/前的一个字符一定不能为字母

ret = re.search(r'(?P\d{3})/(?P\w{3})’, ‘wa124/bug’)

print(ret.group()) # 124/bug

print(ret.group(‘id’)) # 124

print(ret.group(‘name’)) # bug

ret = re.match(‘asd’, ‘sdsasd’)

print(ret) # None

ret = re.split(‘s’, ‘qwesdc’) # 通过s对后面的字符串进行分割

print(ret) # [‘qwe’, ‘dc’]

ret = re.split(‘[eh]’, ‘qwesdhtrc’) # 先通过e对后面的字符串进行分割,然后通过h对前面分割开的两部分继续分割

print(ret) # [‘qw’, ‘sd’, ‘trc’]

ret = re.split(‘[eh]’, ‘hqwesdhtrc’)

print(ret) # [”, ‘qw’, ‘sd’, ‘trc’] 列表第一个元素为空,是因为字符串h前面没有其他的字符

ret = re.sub(‘臭猪’, ‘小baby’, ‘双双是臭猪’) # (‘原内容’, ‘新内容’, ‘对象’)

print(ret) # 双双是小baby

ret = re.subn(‘臭猪’, ‘小baby’, ‘双双是臭猪,小臭猪’) # (‘原内容’, ‘新内容’, ‘对象’),该方法会输出替换的次数

print(ret) # (‘双双是小baby,小小baby’, 2)

ret = re.sub(‘q..s’, ‘s..z’, ‘zaqwesf’) # (‘原内容’, ‘新内容’, ‘操作对象’)

print(ret) # zas..zf

ret = re.findall(r’\.com’, ‘adsdas.comasdaf’)

print(ret) # [‘.com’]

obj = re.compile(r’\.com’) # 为了避免重复,把规则编译为一个对象,下次使用只需调用对象即可

ret = obj.findall(‘adsdas.comasdaf’) # 等价于 re.findall(r’\.com’, ‘adsdas.comasdaf’)

print(ret) # [‘.com’]

ret = re.finditer(r’\d’, ‘a2da7f’) # 把结果封装为一个迭代器,既此时ret为一个迭代器

print(ret) #

print(next(ret)) # <_sre.sre_match object span=”(1,” match=”2″>

print(next(ret).group()) # 2

python正则表达式菜鸟教程_正则表达式空格怎么表示

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188807.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 《图解HTTP》读书笔记建议收藏

    《图解HTTP》对HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。

    2021年12月18日
  • webstorm2022.01激活码_最新在线免费激活[通俗易懂]

    (webstorm2022.01激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • leetcode 题解 || Valid Parentheses 问题[通俗易懂]

    leetcode 题解 || Valid Parentheses 问题

  • Stata: 合成控制法 synth 命令无法加载 plugin 的解决办法

    Stata: 合成控制法 synth 命令无法加载 plugin 的解决办法 作者:陈勇吏(上海交通大学安泰经济与管理学院) Stata连享会:知乎|简书|码云|CSDNStata连享会 计量专题||精品课程||简书推文||公众号合集 连享会#金秋十月@空间计量专题(2019.10.24-27,成都)连享会:内生性问题及估计方法专题 合成控制法的常用命令synth在使用过程中,可能会出…

  • gearman c语言,Gearman分布式任务处理系统(一)基本介绍[通俗易懂]

    gearman c语言,Gearman分布式任务处理系统(一)基本介绍[通俗易懂]Gearman介绍Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下…

  • 魔力宝贝服务端架设_魔力宝贝怀旧手游

    魔力宝贝服务端架设_魔力宝贝怀旧手游CC魔力宝贝服务端setup.cf解释#blserv=211.232.109.164//bl服务器地址#blserv=127.0.0.1//bl服务器端口blserv=222.122.31.125//bl服务器地址blservport=1072//bl服务器端口#blservport=9650//bl服务器端口battledebugmsg=0//战斗debug信息ba…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号