01-python正则表达式(1)

    我也不知道为啥,突然就是想了解一下python中正则的使用,于是就花了两天的时间玩上一玩,顺便搞一下笔记。

    先来讲讲什么是正则表达式,啊~~~~我也不知道,请同学们自行百度。

    算了还是直接说用法吧,理论不太适合我

    还是从基本的语法入手(看下表):

正则表达式代表的匹配字符
[0-9]0123456789任意之一
[a-z]小写字母任意之一
[A-Z]大写字母任意之一
\d等同于[0-9]
\D等同于[^0-9]匹配非数字
\w等同于[a-z0-9A-Z_]匹配大小写字母、数字和下划线
\W等同于[^a-z0-9A-Z_]等同于上一条取非

    先用一个例子讲解一下哈:

>>> re.match(r'a', 'abc').group()
'a'
>>> re.match(r'b', 'abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'group'

>>>后面的是我手动输入的命令,其他的是打印的信息。re是python使用正则表达式的模块,各位在输入命令之前当然要import re导入,match就是re的一个方法,里面的r'b'和'abc'就是我们设定的规则和需要匹配的字符串,match方法有些特殊,他是从给定字符串的开头开始匹配的,之后会说道findall和search方法。group()是将匹配到的字符转换成字符串,如果匹配不到,match返回的是None,然后调用group就会报错,这里单纯是为了方便演示。

**************************分隔线*************************************

    正式开始介绍:

    []  结合表中的1、2、3不难看出,这个符号表达的就是一个集合,表明集合里面的东西都可以匹配,并且还能指定范围:0-9代表是0到9的数字。也可以单个的来,[ab]就是匹配字符a或者b

>>> re.match(r'[abc]', 'abc').group()
'a'
>>> re.match(r'[bac]', 'abc').group()
'a'
>>> re.match(r'[a-z]', 'abc').group()
'a'
>>> re.match(r'[1]', 'abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'group'

这三个例子说明,只要后面的字符串的开头,存在于集合之中,那么就认定已经匹配上了,顺序啊啥的都不管

    \d:d代表的就是数字了,digital的意思,就是匹配单个数字

>>> re.match(r'\d', '123abc').group()
'1'
>>> re.match(r'\d', 'abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

开头是数字就匹配1,不是当然是什么也匹配不到了

    \D:这个表示的是非数字

>>> re.match(r'\D', 'abc').group()
'a'
>>> re.match(r'\D', '123abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'group'

    \w:这个可不是匹配单词,这是匹配字母数字和下滑线的

>>> re.match(r'\w', '123abc').group()
'1'
>>> re.match(r'\w', '-123abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'group'

    \W:匹配除了下滑线之外的字符

>>> re.match(r'\W', '-123abc').group()
'-'
>>> re.match(r'\W', '123abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

    细心的同学会注意到表中有这么一句话:等同于[^a-z0-9A-Z_]等同于上一条取非

    ^这个符号放到[]里面就是说,除了这些之外的

>>> re.match(r'[^1]', 'abc').group()
'a'
>>> re.match(r'[^a-z]', 'abc').group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'NoneType' object has no attribute 'group'

    

元字符说明
.代表任意字符
|逻辑或操作符
\对下一字符取非(通常是普通变特殊,特殊变普通)
*匹配前面的字符或者子表达式0次或多次
*?惰性匹配上一个
+匹配前一个字符或子表达式一次或多次
+?惰性匹配上一个
?匹配前一个字符或子表达式0次或1次重复
{n}匹配前一个字符或子表达式
{m,n}匹配前一个字符或子表达式至少m次至多n次
{n,}匹配前一个字符或者子表达式至少n次
{n,}?前一个的惰性匹配
^匹配字符串的开头
$匹配字符串结束
[\b]退格字符
\c匹配一个控制字符
基本的用法就到这,有同事请吃烤腰子啦,先退一步,今晚会详细的讲解一下match,search,findall,sub以及正则表达式的贪婪模式,还有日常匹配用法,see u
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值