正则表达式(和JavaScript等语言共通)
正则表达式就是对一些字符的匹配,查询,获取的优化,使之更加简单,但是在这种优化强度下,它又及其复杂,特性,需要记得的东西很多的说
一, 导入Re库
由于re库是下载安装完python自带的,所以无需再下载
# 如果没有,则需要先下载
1 pip3 install re
1 import re
二,方法
就目前来讲,re最常用的三种方法
首先,match() 方法就是从开头开始查找,若是第一个首字符以及后面的不是所要匹配的内容,则会返回None
其次,search() 方法就相对之广多了,它是对 整个要匹配的String进行检索
当然,findall)() 顾名思义,就是对所有内容进行检索,并且返回字符串数组
对了,三个方法的参数均为
pattern, string, flags=0
pattern ==> 要匹配的内容
string ==> 被匹配的字符串
flags ==> 匹配方式
现在来一一,细说。
首先来说 flags(当然只记录常用的喽)
其次,最多的就是 pattern 这些元字符了
关于其中的注意项
中括号中的 ^ 是非的意思,表示不匹配集合种的字符
\ 后字母的大写是小写的非的意思,表示..........
补充方法
match, search 方法后接 .span 可以返回匹配的内容在字符串中的位置下标
代码示范:
1 print(re.match("[^sunck]", "sunck is a good man")) 2 # None 3 print(re.search("[^sunck]", "sunck is a good man")) 4 # match: " ", span=(5, 6) 5 print(re.search("[^sunck]", "sunck is a good man").span()) 6 # (5, 6) 7 print(re.findall("[\d]", "39abc4")) 8 # [‘3‘, ‘9‘, ‘4‘]
接下来的都算补充内容8
补充:边界字符
1 print(re.search("^sunck", "sunck is a good man")) 2 # <re.Match object; span=(0, 5), match=‘sunck‘> 3 print(re.search("sunck$", "sunck is a good man sunck")) 4 # <re.Match object; span=(20, 25), match=‘sunck‘> 5 print(re.search("^sunck", "is a good man sunck")) 6 # None
边界字符不是加在 [] 里的
1 # \b \B比较 2 print(re.search(r"er\b", "never")) 3 # <re.Match object; span=(3, 5), match=‘er‘> 4 print(re.search(r"er\b", "nerve")) 5 # None 6 print(re.search("er\B", "never")) 7 # None 8 print(re.search("er\B", "nerve")) 9 # <re.Match object; span=(1, 3), match=‘er‘> 10 这就是两者间的区别
原文:https://www.cnblogs.com/xmdykf/p/11372796.html