re模块就本质而言,正则表达式(或RE)是一种小型的、高度专业化的编程语言,(在python中)它内嵌
在Python中,并通过re模块实现,正则表达式模块被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
字符匹配(普通字符、元字符)
#1、正则表达式使用: 用来匹配字符的
普通字符:大多数字符和字母都会和自身匹配
import re
# s = "hello world"
#
# print(s.find("llo"))
# ret = s.replace("ll","xx")
# print(ret)
# print(s.split("w"))
2元字符: . ^ $ * + ? { } [] | () \
#. 任意匹配(除\n外)
ret = re.findall("h...o","hello world")
print(ret)
#^ 从前匹配
ret = re.findall("^h...o","hewdo world hexno")
print(ret)
#$ 从后匹配
ret = re.findall("w..d$","wdifdhello sdwordwold")
print(ret)
#* 重复匹配
ret = re.findall("ab*","hello world i come aback")
print(ret)
#+ 至少出现一次匹配
ret = re.findall("a+b","adsdfbadbababdjfn")
print(ret)
#? [0,1] 最多出现一次匹配
ret = re.findall("a?b","abdsdfbadbababdjfn")
print(ret)
#{ } 贪婪匹配
ret = re.findall("a{1,3}b","adsdfbaaabbabbbdaadbababdjfn") #{1,}等价于{1,+00}
print(ret)
结论:* 等于 {0到正无穷} + 等价于{1到正无穷} ?等价于{0,1}
#[]字符集:取消元字符的特殊功能
ret = re.findall("[w,,]","awdx.,")
print(ret)
#反斜杠后边跟普通字符实现特殊功能
\d 匹配任何十进制数 它相当于类[0-9]
\D 匹配任何非数字字符 它相当于类[^0-9]
\s 匹配任何空白字符 它相当于类 [ \t\n\r\f\v]
\S 匹配任何非空白字符 它相当于类 [^ \t\n\r\f\v]
\w 匹配任何字母数字字符,它相当于类 [1-zA-Z0-9_]
\W 匹配任何非字母数字字符,它相当于类 [^1-zA-Z0-9_]
#正则表达式的方法:
1、findall(): 所有结果都返回到一个列表里
2、search(): 返回匹配到的一个对象(object),对象可以调用group()返回结果
3、match(): 只在字符串开始匹配时匹配,也返回匹配到的第一个对象(object),对象可以调用group
ret = re.match("assd","asdgfhjdk")
print(ret)
print(ret.group())