正则表达式匹配减号_Python入门:正则表达式(Regular Expression)

正则表达式用来干嘛

  • 正则表达式是用来匹配文本的一种语言。别被语言吓到,正则表达式其实非常简单,可能你花2个小时就能用起来,但是你一定会觉得非常强大,像非常厉害的数据爬取,网页爬虫,都要用到正则表达式!

什么是正则表达式

维基百科解释:

正则表达式(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),又称正规表示式、正规表示法、正规运算式、规则运算式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在 Perl 中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由 Unix 中的工具软件(例如 sed 和 grep)普及开的。

b81fa4c4d0fa6e4e78cf574afdfb9809.png
表格1

单位划分

  • 正则表达式由操作符和原子构成(操作元),也就是操作符,和操作的对象!先上个例子1:
import re
txt1 = 'WWe111 Are22 Family3 !'
reg = "[A-Z]+[a-z]{2}[0-9]*?"
parttern = re.compile(reg)
content = re.findall(parttern,txt1)
print(content)

#output:['Are', 'Fam']

操作原子

本意原子

  • 例1中[A-Z]的意思是匹配大写字母,且只匹配一个大写字母!如例2:
import re
txt1 = 'We111 Are22 Family3!'
reg = "[A-Z]"
parttern = re.compile(reg)
content = re.findall(parttern,txt1)
print(content)

#output:['W', 'A', 'F']
  • 而[a-z]只匹配一个小写字母。如例3:
import re
txt1 = 'We111 Are22 Family3!'
reg = "[a-z]"
parttern = re.compile(reg)
content = re.findall(parttern,txt1)
print(content)

#output:['e', 'r', 'e', 'a', 'm', 'i', 'l', 'y']
  • +加号表示匹配1个或者多个前面的操作元,默认情况是匹配尽可能多的字符,什么意思呢?如例4
import re
txt1 = 'WWe111 Are22 Family3 !'
reg = "[A-Z]+"
parttern = re.compile(reg)
content = re.findall(parttern,txt1)
print(content)

#output:['WW', 'A', 'F']
  • 例4中结果匹配了两个WW,但是加一个问号?就表示尽可能少的匹配,也就是非贪婪模式。如例5:
import re
txt1 = 'WWe111 Are22 Family3 !'
reg = "[A-Z]+?"
parttern = re.compile(reg)
content = re.findall(parttern,txt1)
print(content)

#output:['W', 'W', 'A', 'F']
  • *星号的意思是匹配0个或者多个,同样有贪婪模式和非贪婪模式。例子1中*星号后面有个问号?表示非贪婪模式,匹配数字0个数字,一般情况下就是不匹配数字的意思
  • 注意正则匹配是拿整个表达式去匹配文本,得到的加入到列表中,然后从匹配到的字符下一个字符开始重新匹配,如此循环直到结束!
  • 例1中A-Z,a-z,0-9是正则表达式的本意原子,表示的就是本身,没有其他意思
  • 而加号+星号*?减号-等并不是表示表面上的的意思,如+加号并不是字符串拼接或者两个数字相加,同样的-减号并不是两个数字相减,[0-9]表示的是匹配0-9中的任意一个整数.
  • 例1中的*号是数量操作符,表示匹配0个或者多个前面一个原子,类似的操作符还有+,?,*, {n, m}对照表格1.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值