通常进行字符串处理时, 常用到正则表达式完成按自定义的规则对其处理. 通常这些规则称为模式, 因此正则表达式也称为模式表达. 在python中, 一般使用re模块实现python正则表达式功能.
原子
正则表达式最基本组成单元,常见原子类型:
* 普通字符作为原子
普通字符:数字 大小写字母 下划线:
import re pattern = "yue" # 普通字符作为原子 strs = "shengyueqing" res = re.search(pattern=pattern,string=strs) # 成功返回匹配结果 print res out: <_sre.SRE_Match object at 0x7fd64ad29718>
*非打印字符作为原子
非打印字符:一些在字符串中用于格式控制符号, 比如换行符
import re pattern = "\n" strs = '''test1 test2''' res = re.search(pattern=pattern,string=strs) print res out: <_sre.SRE_Match object at 0x7f4b51449718>
*通用字符作为原子
通用字符: 一个原子可匹配一类字符.
import re pattern = "\w\dpython\w" strs = "abcdfphp345python_py" res = re.search(pattern=pattern,string=strs) print(res.group()) #45python_
解释:模式’\w\dpython\w’对python字符进行匹配, 要求: 字符后\w是一个字母 数字或下划线, 字符前\d一位是一个任意的十进制数, 再前一位\w是字符 数字或下划线.
*原子表
使用原子表, 可以定义一组地位平等的原子, 当匹配时会取该原子表的任意一个原子进行匹配.
pat1 = "\w\dpython[xyz]\w" pat2 = "\w\dpython[^xyz]\w" pat3 = "\w\dpython[xyz]\W" strs = "abcdfphp345pythony_py" res1 = re.search(pattern=pat1,string=strs) res2 = re.search(pattern=pat2,string=strs) res3 = re.search(pattern=pat3,string=strs) print "res1",res1.group() #25pythony_ print "res2",res2.group() #无匹配报异常 print "res3",res3.group() #无匹配报异常
解释:
pat1: [xyz]表示匹配其中任意一个即可, 45pythony_中匹配python后面的y
pat2: [^xyz]表示匹配除xyz任意其他字符即可
元字符
定义: 正则表达式中一些特殊含义的字符, 比如重复N次前面的字符, 也称为量词
常见元字符及含义:
元字符分为: 任意匹配元字符 边界限制字符 限定符 模式选择符 模式单元
*任意匹配元字符
import re strs = "abcdfphp345pythony_py" patt = ".python.." res4 = re.search(pattern=patt,string=strs) print(res4.group()) #5pythony_
三个点号匹配除换行符外的任意字符, 匹配python的前一个字符及后面的两个字符
*边界限制元字符