【1.72】正则表达式--1
import re
正则表达式 就对字符串 的模糊匹配
字符串 find split replace 等都是全匹配
正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。
或者说:正则就是用来描述一类事物的规则。
(在Python中)它内嵌在Python中,并通过 re 模块实现。
正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
字符:
. 匹配除换行符以外的任意字符
^ 匹配字符串的开始
$ 匹配字符串的结束
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
import re # 元字符点 . 就是通配符 匹配所有 除开\n str = "nameyaoming123yaoming234yuncang567" # findall 就是 找出所有的 匹配 前一个参数是规则 后一个是被匹配的字符串 x = re.findall("yaoming", str) #这里就是完全匹配 print(x) #['yaoming', 'yaoming'] y = re.findall("y.....g",str) #这里是模糊匹配 print(y) # ['yaoming', 'yaoming', 'yuncang'] #点 . 通配符 元字符 要匹配多少个字符 就要多少个点
import re # 元字符点 ^ 只是从开始匹配 匹配不到就是空列表 str = "nameyaoming123yaoming234yuncang567" y = re.findall("^y.....g",str) #这里是模糊匹配 print(y) #[] 什么也没有匹配到 x = re.findall("^n..e...ming",str) print (x) #['nameyaoming']
import re # 元字符点 $ 只是匹配最后 匹配不到就是空列表 str = "nameyaoming123yaoming234yuncang567" x = re.findall("y.....g567$",str) #这里是模糊匹配 print(x) #['yuncang567'] str = "nameyaoming123yaoming234yuncang567$" y = re.findall("y.....g567$",str) #这里是模糊匹配 print(y) #[] 这里是规则里面的 $ 标识从最后匹配 不是用来被匹配的字符 #所以这里的 y 就是空列表
import re # 元字符点 * 紧挨着的字符 重复(0-无数次) 记住 0 也要算 str = "gggege" x = re.findall("g*",str) print(x) #['ggg', '', 'g', '', ''] #这里 0次匹配也被记录下来 str = "gggege" y = re.findall("^g*",str) #这就是g开头,重复0到无数次的 print(y) #['ggg']
import re # 元字符点 + 紧挨着的字符 重复(1-无数次) str="123alexxx567" x = re.findall("alex*",str) print(x) #['alexxx'] y = re.findall("alex+",str) print(y) #['alexxx'] str="123ale567" x = re.findall("alex*",str) print(x) #['ale'] y = re.findall("alex+",str) print(y) #[]
import re # 元字符点 ? 紧挨着的字符 重复(0-1) str="123alexxx567" x = re.findall("alex?",str) print(x) #['alex'] str="123ale567" y = re.findall("alex?",str) print(y) #['ale']
import re # 元字符点 {} 紧挨着的字符 重复 #{0,} == * #{0,1} == ? #{1,}== + #{6} 等于必须重复六次 str="123alexxxx567" x = re.findall("alex{0,}",str) print(x) #['alexxxx'] y = re.findall("alex{0,1}",str) print(y) #['alex'] z = re.findall("alex{1,2}",str) print(z) #['alexx'] a = re.findall("alex{3}",str) print(a) #['alexxx'] str="123ale567" y = re.findall("alex{0,1}",str) print(y) #['ale']
import re # 元字符点 *? +? 紧挨着的字符 惰性匹配 就是匹配当前 规则的 最少次 str="123alexxxx67" y = re.findall("alex*?",str) print(y) #['ale'] y = re.findall("alex+?",str) print(y) #['alex']
浙公网安备 33010602011771号