正则表达式可以检索也可以替换
这些元字符基本上每套语言都是一样的
重复的问题
数字11位就是手机号
我们只需要把电话号码抠出来,有效性还是需要自己去打电话
剩下两个电话号码怎么提出来,中国城市再小,电话号码也是7位的了,没有6位的了
改变成(w|f)ood
现在就等于food,wood
项目中需要写正则表达式,先把案例贴过来然后不停地测试,直到合格为止
刚才电话号码可以设定号段
使用小括号代表一个分组,捕获后会有一个分配组号,从1开始,会有优先级的问题
分组会变,前面的分组是w|f,后面分组是od
这样是只匹配一项
多个空白字符可以这么写
前面的是会尽量贪婪的
前面的分组编号是1
不要分组
这是匹配不是分组
现在匹配跟分组是一致的了,多数情况下,匹配往往更长
不要分组就在前面加?问号,group就消失了,表示括号里的分组不要了,但是该匹配匹配
依然匹配wood food,但是分组不要了,
下面的不参与分组等价industry|industries
这时候food配就有两个分组了
*
命名分组,大多数语言都是在?问号加尖括号加引号,在里面起名字,就不是1,2,3
分组1名字叫head
命名分组在python中,要在前面大写P
断言
分组一般在匹配项之内的
断言前面这个形式。,写的这个表达式一定在匹配的右边出现,也就是断言后面一定跟什么
断言不是分组,断言跟分组没有关系,语言什么之后一定怎么着
他要求f后面一定是ood且等于=,谁后面一定出现了谁
断言只是一个条件,不参与匹配,所以匹配的只是f
这样代表ood的前面一定有f
断言是条件,只匹配到ood
代表取反,右边一定不能出现这些,左边一定不能出现什么
在后面不能出现数字
123,456要求匹配项后面不能有数字
匹配food是不允许的
t是不参与的,只是一个条件
断言是在python库里支持的,到其他地方一定要注意
注释了解即可
断言不参与捕获,不占分组号
断言,只是一个条件,只要求匹配满足条件的
分组一般是套个括号,加优先级即可,不想分组,只想要优先级改变,加?:
分组名(?<>)
分组号从1 开始,只有匹配才有分组
简单意味着易读和高效
这样就很贪婪
两头不要就要中间的
非贪婪?匹配任意次,但尽可能少重复,能短则短*
至少一次尽可能短
匹配的是ab
尽可能短,b消失了,就是a
加上问号?就尽可能短
b+是尽量长的b,加上?,都是每个都尽可能短
改成*就是可以没有b了,这样就不建议写
贪婪在重复的字符上加