正则表达式符号与方法

来源:互联网 发布:java免费视频教程下载 编辑:程序博客网 时间:2024/06/05 04:45

正则表达式符号与方法


常用符号:

  . :匹配任意字符,换行符\n除外

  * :匹配前一个字符0次或无限次

  ? :匹配前一个字符0次或1次

  .* :贪心算法,匹配最长

 .*? :非贪心算法,少量多餐

  () :括号内的数据作为结果返回


常用方法:

  findall:匹配所有符合规律的内容,返回包含结果的列表。

  Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)

  Sub:替换符合规律的内容,返回替换后的值  


#coding=utf-8#导入re库文件import resecret_code='hadfalifexxIxxfasdjifja134xxlovexx2345xxyouxx8dfse'# .的使用:占位符a='xz123'b=re.findall('x...',a)print b# *的使用a='xyxy123'b=re.findall('x*',a)print b# ?的使用,匹配0次或1次a='xy123'b=re.findall('x?',a)print b'''需要掌握组合方式(.*?)'''# .*的使用举例b=re.findall('xx.*xx',secret_code)print b# .*?使用举例c=re.findall('xx.*?xx',secret_code)print c#使用括号与不适用括号的举例d=re.findall('xx(.*?)xx',secret_code)print dfor each in d:    print eachs='''sdfxxhelloxxfsdfxxworldxxasdf'''d=re.findall('xx(.*?)xx',s,re.S)print d#对比findall与search的区别s2='asdfxxIxx123xxlovexxdfd'f=re.search('xx(.*?)xx123xx(.*?)xx',s2).group(2)print ff2=re.findall('xx(.*?)xx123xx(.*?)xx',s2)print f2[0][1]#sub的使用s='123abcsrrrrsfasdfas123'output=re.sub('123(.*?)123','123%d123'%789,s)print output


常用技巧


import re

from re import *

from re import findall,search,sub,S

不需要complie

使用\d+ 匹配纯数字


#匹配纯数字a='asdfasf1234567fasdfas'b=re.findall('(\d+)',a)print b