正则表达式

元字符

“.” :通配符,除换行符外的任意的1个字符

“\d” : 数字

“\D” : 非数字

“\s” :空白字符 、 \t、\r、\n、空格

“S” :非空白字符

“\w” :单个的 数字和字母,[A-Za-z0-9]

“\W”:非单词字符,除数字和字母外

数量词

“*” :0次或多次

“+” :1次或多次

“?” :0次或1次

“{m}” :匹配字符串出现m次

“{m,n}” :匹配字符串出现m到n次

边界

“^” :匹配字符串开头或行头

“$” :匹配字符串结尾或则行尾

“\A”:匹配字符串开头

“\Z”:匹配字符串结尾

常用方法

compile(pattern):自定义匹配模式

 

test_string="123456abcdefghijkab123"
  patter=re.compile('ab')
  s=patter.findall(test_string)
  print(s) #结果['ab', 'ab']

search(pattern,string):在字符串中寻找模式,找到返回MatchObject(True),未找到返回None(False)

test_string="123456abcdef985@#ghijkab123ab"
  search=re.search('\d{3}',test_string)
  print(search) #结果<re.Match object; span=(0, 3), match='123'>

match(pattern,string):在字符串开始处匹配模式,找到返回MatchObject(True),未找到返回None(False)

test_string="123456abcdef985@#ghijkab123ab"
  match=re.match("\D",test_string)
  print(match) #结果None  test_string="123456abcdef985@#ghijkab123ab"
  match=re.match("\d",test_string)
  print(match) #结果<re.Match object; span=(0, 1), match='1'>

split(pattern,string):根据模式分割字符串,返回列表

test_string="123456abcdef985@#ghijkab123ab"
  split=re.split('ab',test_string)
  print(split) #结果 ['123456', 'cdef985@#ghijk', '123', ''],按照ab进行分割

findall(pattern,string):列表形式返回匹配项

test_string="123456abcdef985@#ghijkab123ab"
  findall=re.findall('\d+',test_string)
  print(findall) #结果 ['123456', '985', '123']

sub(pat,repl,string) :用repl替换 pat匹配项

test_string="123456abcdef985@#ghijkab123ab"
  sub=re.sub('\d+','T',test_string)
  print(sub)#结果TabcdefT@#ghijkabTab