正则匹配
\w = [A-Za-z0-9_] 但是不能匹配特殊符号如&,空格
\W 匹配非单词非数字非下划线 ,比如能匹配到&,空格
\d = [0-9]
\D = [^0-9] #在中括号的^表示非
\s 匹配 空白字符 比如 ' ' '\t' '\n'
. 匹配 除了换行符的所有符号
import re
a = 'python 111java666php'
r = re.findall('[a-z]{3,6}',a)
print(r)
上面的结果会贪婪匹配到6个字符,可以成功匹配到python整个字符串
贪婪与非贪婪 在{3,6}加多一个问号变成非贪婪
r = re.findall('[a-z]{3,6}?',a)
这样的只会连续匹配3个字母就停下了
结果: pyt hon jav php
因为jav后剩下一个a不连续了,后面是数字,所以匹配不了
另外一种?代表0到多个,如果不是在数量级字符后面(比如{3,6})的话
边界匹配
^\d{4,8}$
如果是连续的11个数字不能匹配
模式匹配
忽略大小写
=====
import re
language = 'PythonC#JavaPHP'
用| 来进行多种模式匹配 re.I 忽略大小写 re.S匹配所有字符,包括换行符,跟.匹配结合使用
r = re.findall('c#',language,re.I | re.)
替换
如果是1就替换1个,如果0表示无限
将字符串出现C#都调换成GO
re.sub('C#','GO',lauange,1)
比较好用的正则
re.match
re.serach
匿名函数 用lambda
def add(x,y)
return x+y
print(add(1,2))
f= lambda x,y: x+y
(f(1,2))
三元表达式
x,y x 大于y x 否则 y
条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果
x = 2
y = 1
r = x if x>y else y
print(r)