正则表达式是对字符串的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则的字符串”,此字符串用来表示对字符串的一种“过滤”逻辑。正在在很多开发语言中都存在,而非python独有。
示例:
import re # 导入正则模块 tel = "0755-12345678" #实例化一个检索对象 pat = r"2[0567][1789]\d{5}|\d{4}-\d{8}" #实例化表达式 print(re.findall(pat, tel)) # 在检索对象中按照表达式进行检索并打印 >>> ['0755-12345678'] # 返回值此模块主要方法如下
re.match() #尝试从字符串的起始位置匹配一个模式(pattern),如果不是起始位置匹配成功的话,match()就返回None re.search() #函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。 re.findall() #遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。 re.compile() #编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。) re.sub() #使用re替换string中每一个匹配的子串后返回替换后的字符串。 re.subn() #返回替换次数 re.split() #按照能够匹配的子串将string分割后返回列表。re.match(pattern, string, flags=0) pattern:正则表达式(或者正则表达式对象) string:要匹配的字符串 flags:修饰符 尝试从字符串的起始位置匹配一个模式(pattern) 如果不是起始位置匹配成功的话 match()就返回None
import re strr = "javapythonhtml" result = re.match('.*python',strr) print(result) print(result.group()) # .group()表示的是返回正则匹配的结果 print(result.span()) # .span()表示返回正则匹配的范围 >>> <re.Match object; span=(0, 10), match='javapython'> >>> javapython >>> (0, 10)re.search(pattern, string, flags=0) pattern:正则表达式(或者正则表达式对象) string:要匹配的字符串 flags:修饰符 re.match()和re.search()用法类似唯一的区别在于re.match()从字符串头开始匹配,若头匹配不成功,则返回None
import re strr = "javapythonhtml" result = re.match('python',strr) print(result) print(result.group()) # print(result.span()) >>> <re.Match object; span=(4, 10), match='python'> >>> python >>> (4, 10)re.finditer(pattern, string, flags=0) pattern:正则表达式(或者正则表达式对象 string:要匹配的字符串 flags:修饰符 返回一个顺序访问每一个匹配结果(Match对象)的迭代器 找到 RE 匹配的所有子串 返回数组
import re strr ="-------python---------------python-----------------\ ------python-------------------python------------------" result = re.findall(r'python', strr) print(result) >>> ['python', 'python', 'python', 'python']re.finditer(pattern, string, flag) pattern:正则表达式(或者正则表达式对象 string:要匹配的字符串 flags:修饰符 返回一个顺序访问每一个匹配结果(Match对象)的迭代器 找到 RE 匹配的所有子串 返回形式为迭代器
import re strr ="-------python---------------python-----------------\ ------python-------------------python------------------" data = re.finditer(r"python",strr) list1 = [] for i in data: list1.append(i.group()) print(list1) >>> ['python', 'python', 'python', 'python']re.compile(pattern,flags=0) pattern:正则表达式(或者正则表达式对象) flags:修饰符 编译正则表达式模式 返回一个对象的模式
import re strr ="-------python---------------python-----------------\ ------python-------------------python------------------" result = re.compile(r"python") print(result.findall(strr)) >>> ['python', 'python', 'python', 'python']re.sub(pattern, repl, string, count=0, flags=0) pattern:正则表达式(或者正则表达式对象) repl:替换的字符串 string:要匹配的字符串 count:要替换的个数 flags:修饰符 用于替换字符
import re strr = "hello 111,hello 222" result = re.sub(r"\d+", "666", strr) print(result) >>> hello 666,hello 666re.split(pattern, string,[maxsplit]) 正则表达式(或者正则表达式对象)string:要匹配的字符串 maxsplit:用于指定最大分割次数 不指定将全部分割 用于分割字符
import re strr = ",leesin,hasaki,zed,,javen,,," pat = re.compile(r",+") result = re.split(r",+",strr,3) print(result >>> ['', 'leesin', 'hasaki', 'zed,,javen,,,']转载于:https://www.cnblogs.com/youngleesin/p/11230394.html
相关资源:python 用正则表达式筛选文本信息的实例