- 正则表达式是独立于python的,是所有语言中都会有的。Regular Expression用来描述某种规则的表达式
- re模块的使用
最常使用match(匹配)
校验:用规则去对比
result = re.match(正则表达式, 要匹配的字符串)
如果符合规则,返回(Match Object);如果不符合,返回None,而不是空字符串(因为空字符串也是某种可校验的规则)
group方法,查看匹配出来的字符串内容。
1个小规则:
Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32
import re
pattern = "itcast"
s = "itcastitem"
result = re.match(pattern, s)
result
<_sre.SRE_Match object; span=(0, 6), match='itcast'>
dir(result)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
result.group()
'itcast'
以上还不具备任何通用性,完全可以使用“itcastitems”.startwith(itcast)。
通用规则:
![](https://img.haomeiwen.com/i2228081/8e7a9ce7470b5791.png)
- “.”可以匹配任何一个字符,用以判断是否有指定数量的字符,由于match方法的特殊性,“...”可以匹配"abcd",但只能匹配出相应数量:“abc”
- \d,匹配数字,对应位置必须是一个数字
- \D,匹配非数字
- \s,匹配空白,空白不止是空格,包括 \t \n \r
- \w,匹配单词:a-z,A-Z,0-9,_
- [],匹配其中列举的字符,都是可以出现的,中间不需要逗号或者空格空开,如果有“^”则取反;可以用中斜线代表范围比如[a-z5-9]
\d == [0-9]
\D == [^0-9]
\w == [a-zA-Z0-9_]
\W == [^a-zA-Z0-9_]
表示数量: - “”表示可以0个或者任意多个前一个字符(有或者没有都行),tip:[\d]表示可以有多个数字也可以没有数字,相当于[\d\d\d\d\d...]
- "+"至少出现一次,1次或者无限次,和星号区别是:+号必须出现一次数字,星号可以不出现数字。
- “?”要么有一次,要么没有;能匹配出一次
- {m}表示前面一个字符必须出现m次,多一次少一次都不行;加一个“,”表示大于等于m次,相当于左闭右闭的区间。{m,n}出现m到n次。{0,}>= 0,表示*,{1,}>= 1,表示+,{0,1}<= 1,表示?
注意:result = re.match("\d*","a"),返回的是"",为什么不是None?——不符合规则的时候返回None,现在符合规则返回的是"a"前面的""(空字符串)(“a”可以看作是"""a")
- 加上“r”代表的是原始字符串,不被转义,r是raw的缩写,也就是说,在我们输入的时候是什么样的,输出打印的时候就是什么样的。r"\nabc" == "\\nabc",一般情况下无论是否考虑到需要转义的情况,都要加上“r”。
网友评论