06.正则表达式
行定位符:
^ 行开始
$ 行结尾
元字符:
限定符:
字符类:
^ 排除字符,如[^a-zA-Z]不是字母的字符
| 选择字符,如(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$,匹配15位数字,或18位数字,或17位数字最后一位是X或x或一个数字
\ 转义字符
() 分组
模式字符串前加r或R就是原生字符串
print(r'1232\b') # 1232\b
re模块实现正则表达式:
match()匹配:用于从字符串的开始处进行匹配,如果开始位置匹配成功,返回match对象,否则返回None
re.match(pattern, string, flags)
pattern:模式字符串
string:要匹配的字符串
flags:可选参数,标志位
import re pattern = r'a_\w+' m1 = re.match(pattern, 'A_vccc1212', re.I) # 不区分大小写 m2 = re.match(pattern, 'A_1212', re.I) # 不区分大小写 m3 = re.match(pattern, 'aA_vccc1212', re.I) # 不区分大小写 m4 = re.match(r'(a_\d+)', 'A_122aa1212', re.I) # 不区分大小写 print(m1) # <re.Match object; span=(0, 10), match='A_vccc1212'> print(m2) # <re.Match object; span=(0, 6), match='A_1212'> print(m3) # None # 匹配值的起始位置 print(m1.start()) # 0 # 匹配值的结束位置 print(m1.end()) # 10 # 匹配位置的元组 print(m1.span()) # (0, 10) # 要匹配的字符串 print(m1.string) # A_vccc1212 # 匹配数据 print(m1.group()) # A_vccc1212 print(m4.group()) # A_122 print(m4.group(0)) # A_122 print(m4.group(1)) # A_122 # print(m4.group(2))#IndexError: no such group
search()匹配:用于整个字符串搜索第一个匹配的值
re.search(pattern, string, flags)
pattern = r'a_\w+' m1 = re.search(pattern, 'AvccaA_1212', re.I) # 不区分大小写 m2 = re.search(pattern, 'AvccaA1212', re.I) # 不区分大小写 print(m1) # <re.Match object; span=(5, 11), match='A_1212'> print(m2) # None
findall()匹配:搜索整个字符串所有符合正则表达式的字符串,以列表的形式返回
re.findall(pattern, string, flags)
pattern = r'a_\w+' m1 = re.findall(pattern, 'AvccaA_12a_12', re.I) # 不区分大小写 m2 = re.findall(pattern, 'AvccaA1212', re.I) # 不区分大小写 print(m1) # ['A_12a_12'] print(m2) # []
sub()替换:
# re.sub(pattern, repl, string, count=0, flags=0) # pattern:模式字符串 # repl:替换的字符串 # string:要被查找替换的原始字符串 # count:替换的最大次数 # flags:标示位,如是否区分大小写 patterm = r'(狗贼)|(傻子)' res = re.sub(patterm, '**', '你是狗贼') print(res) # 你是**
split()正则分割字符串:
# re.split(pattern, string, maxsplit=0, flags=0) # pattern:模式字符串 # string:要匹配的字符串 # maxsplit:最大拆分次数 # flags:标示位,如是否区分大小写 pattern = r'[?|&]' res = re.split(pattern, 'login.jsp?name=aa&pwd=123') print(res) # ['login.jsp', 'name=aa', 'pwd=123']
推荐博客:
"""博客:https://blog.csdn.net/weixin_40907382/article/details/79654372"""