正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串 正则表达式是字符串处理的有力工具,正则表达式使用预定义的模式去匹配一类具有共同特征的字符串,可以快速、准确地完成复杂的查找、替换等处理要求,比字符串自身提供的方法提供了更强大的处理功能。正则表达式在文本编辑与处理、网页爬虫之类的场合中有重要应用。正则表达式由元字符及其不同组合来构成,通过巧妙地构造正则表达式可以匹配任意字符串,并完成查找、替换、分隔等复杂的字符串处理任务。’[a-zA-Z0-9]’
正则表达式使用圆括号“()”表示一个子模式,圆括号内的内容作为一个整体对待,例如’(red)+‘可以匹配’redred’、'redredred’等一个或多个重复’red’的情况。 使用子模式扩展语法可以实现更加复杂的字符串处理功能。
语法功能说明(?P)为子模式命名(?iLmsux)设置匹配标志,可以是几个字母的组合,每个字母含义与编译标志相同(?:…)匹配但不捕获该匹配的子表达式(?P=groupname)表示在此之前的命名为groupname的子模式(?#…)表示注释(?<=…)用于正则表达式之前,表示如果<=后的内容在字符串中不出现则匹配,但不返回<=之后的内容(?=…)用于正则表达式之后,表示如果=后的内容在字符串中出现则匹配,但不返回=之后的内容(?<!..)用于正则表达式之前,表示如果<!后的内容在字符串中不出现则匹配,但不返回<!之后的内容(?!..)用于正则表达式之后,表示如果!后的内容在字符串中不出现则匹配,但不返回!之后的内容
Python标准库re模块提供了正则表达式操作所需要的功能。
方法功能说明compile(pattern[, flags])创建模式对象escape(string)将字符串中所有特殊正则表达式字符转义findall(pattern, string[, flags])返回包含字符串中所有与给定模式匹配的项的列表finditer(pattern, string, flags=0)返回包含所有匹配项的迭代对象,其中每个匹配项都是match对象fullmatch(pattern, string, flags=0)尝试把模式作用于整个字符串,返回match对象或Nonematch(pattern, string[, flags])从字符串的开始处匹配模式,返回match对象或Nonepurge()清空正则表达式缓存search(pattern, string[, flags])在整个字符串中寻找模式,返回match对象或Nonesplit(pattern, string[, maxsplit=0])根据模式匹配项分隔字符串sub(pat, repl, string[, count=0])将字符串中所有与pat匹配的项用repl替换,返回新字符串,repl可以是字符串或返回字符串的可调用对象,作用于每个匹配的match对象subn(pat, repl, string[, count=0])将字符串中所有pat的匹配项用repl替换,返回包含新字符串和替换次数的二元元组,repl可以是字符串或返回字符串的可调用对象,作用于每个匹配的match对象 import re telNumber = "My tel: 0234-1234675,your tel: 023-1223344, his tel: 034-23456" pattern = r"(\d{3,4})-(\d{3,8})" for item in re.findall(pattern, telNumber): print("-".join(item)) import re phone = "2004-959-599 #这是一个电话号码" num = re.sub("#.*$","", phone) print(num) num = re.sub("\D","", phone) print(num)