正则表达式的学习总结
-
正则表达式就是。
以一小段字符串表征许多字符串的共同特点,从而把有这个特点的字符串提取出来。以一小段字符串表征许多字符串的共同特点,从而把有这个特点的字符串提取出来。 -
库中的符号元素介绍
.
表示一个任意的字符.
表示一个任意的字符
[ ]
表示字符集,对单个字符给出取值范围,eg:[ling][l-m]
[^ ]
非字符集,对单个字符给出排除范围eg:[^jian]
*
他所标记在那个字符后,那个字符会有0次或者无限次的扩展eg:hang*
+
上同,但是表示1次到无限次的扩展eg:hang+
?
上同,但是表示0到1次的扩展eg:hang?
|
左右表达式的任意一个eg:ling|fang
{N }
扩展前一个字符N次eg:{N}
{ N,M}
扩展前一个字符N-M次eg:{N,M}
^
匹配字符串开头eg:^ping
$
匹配字符串结尾eg:ping$
()
进行分组的标记,内部只能用|操作eg:(ling|fang)
\d
数字,介于eg:[0-9]
\w
单词字符,等价于[A-Za-z0-9_]
-
使用正则表达式
import re #就引入了正则表达式的库
正则表达式的类型 raw string 类型来表达正则表达式:
比如想要表示linghanghang纳闷写成r’linghanghang’,否则在Python中要写成字符串类型,需要加斜杠,而斜杠又涉及到转义字符,所以要加两个斜杠。这样就会很麻烦,所以通常情况下用正则表达式来表达。
- 正则表达式的函数。
re.search(pattern,string,flags)
这个函数的作用是,匹配正则表达式的第一个位置,返回一个match类型
pattern是正则表达式的字符串
string待匹配的字符串
flags正则表达查找的标记有三个。re.In能忽略正则表达式的大小写。re.M对操作符^
操作。可以让正则表达式在每一行的开始进行匹配。re.S对点.
操作符作用的,能够匹配所有的字符,除了换行符。
re.match(pattern,string,flags)
,从一个字符串的开始位置匹配正则表达式,返回一个match对象。注意是从开头匹配!!!!否则就是空的。
re.findall(pattern,string,flags)
,列表类型返回全部能匹配的字符串。
re.split(pattern,string,maxsplit,flags)
,将一个字符串按正则表达式匹配出的结果进行分割。并且返回列表类型。
增加的maxsplit是最大分割数目。剩余没分的,按一大坨字符串直接输出。
注意!按正则表达式匹配出的是不要的,丢掉的。
re.finditer(pattern,string,flags)
,返回一个匹配结果的迭代类型,返回的类型也是match。常常for厮混:
impo re
for m in re.finder(r'[1-9]\d{5}','BIT10081 TSU100084'):
if m :
print(m.group(0))`
re.sub(pattern,repl,string,count,flags)
,按正则表达式匹配到那个位置的字符串,然后用repl给的字符串去代替。count表示最大的替换次数。
- Re库的match对象
match对象的属性
.string
待匹配的文本,也就是把要被检索的内容全按字符串形式打印出来
.re
匹配时使用的正则表达式
.pos
按正则表达式搜索文本的开始位置
.endpos
按正则表达式搜索文本的结束位置
match对象的方法
.group(0)
获得匹配后的字符串,其实还有1.2.3之类的,0表示第一次匹配的结果,1就是第二次匹配结果。
.start()
匹配的字符串在原始字符串开始的位置
.end()
匹配的字符串在原始字符串结尾的位置
.span()
返回(.start(),.end())
6.贪婪匹配
就是搜索的内容中有多个能够匹配的结果,但返回的是最长字符串的那个。所以称为贪婪匹配。
匹配最短的就是加?
符号,如下
*?
+?
??
{M,N}?
这就是最小匹配的操作符。