Python基础之re模块(正则表达式)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础之re模块(正则表达式)相关的知识,希望对你有一定的参考价值。
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
字符匹配又分为两种:
一、普通字符:
大多数字符和字母都会和自身进行匹配。
import re ret = re.findall("admin","hello administrator") #这是字符串的完整匹配 print(ret) ---------输出结果----------- [‘admin‘]
二、元字符:
元字符符号包括:" . ^ $ * + ? {} [] () \ | "。
下面我们就来详细看看具体的含义和用法:
1、元字符之 . ^ $ * + ? {} :
ret = re.findall("a...n","hello administrator") #"."表示所有除\n之外的任何单个字符 print(ret) #-----> [‘admin‘] ret = re.findall("^h...o","hello administrator") #匹配输入字符串的开始位置 print(ret) #-----> [‘hello‘] ret = re.findall("r...r$","hello administrator") #匹配输入字符串的结束位置 print(ret) #-----> [‘rator‘] ret = re.findall("abc*","abccccc") #匹配前面的子表达式零次或多次 print(ret) #-----> [‘abccccc‘] ret = re.findall("abc+","abccccc") #匹配前面的子表达式一次或多次 print(ret) #-----> [‘abccccc‘] ret = re.findall("abc?","abccccc") #匹配前面的子表达式零次或一次 print(ret) #-----> [‘abc‘] ret = re.findall("abc{1,3}","abccccc") #{}自定义c出现的次数 print(ret) #-----> [‘abccc‘]
注意:前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成非贪婪匹配(惰性匹配)。
ret = re.findall("abc+?","abccccc") #非贪婪匹配 print(ret) #-----> [‘abc‘] ret = re.findall("abc*?","abcccc") #非贪婪匹配 print(ret) #-----> [‘ab‘]
2、元字符之字符集[ ] :
ret = re.findall("a[bc]d","abd") #匹配a和d之间有b或者c print(ret) #-----> [‘abd‘] ret = re.findall("a[bc]d","acd") #匹配a和d之间有b或者c print(ret) #-----> [‘acd‘] ret = re.findall("[a-z]","hello") #匹配a-z之间的所有字母 print(ret) #-----> [‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘] ret = re.findall("[.*+?]","a.b*c+d?e") #在[ ]‘.*+?‘里没有特殊意义了,就是普通的字符 print(ret) #-----> [‘.‘, ‘*‘, ‘+‘, ‘?‘] #在字符集里有功能的符号:-(定义一个范围) ^(取反) \(转义) ret = re.findall("[0-9]","12ab34cd56ef") #取出所有的数字 print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘] ret = re.findall("[^ab]","12ab34cd56ef") #不取出ab print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘c‘, ‘d‘, ‘5‘, ‘6‘, ‘e‘, ‘f‘] ret = re.findall("[\d]","12ab34cd56ef") #相当于[0-9] print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘]
3、元字符之转义符 \ :
反斜杠后边跟元字符去除特殊功能,比如\.,此时.就没有特殊意义了,就是一普通字符。
反斜杠后边跟普通字符实现特殊功能,详见下文:
\d 匹配任何十进制数;它相当于类 [0-9]
\D 匹配任何非数字字符;它相当于类 [^0-9]
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等
以上是关于Python基础之re模块(正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章