python正则匹配字符串边界问题_python 正则表达式与JSON-边界匹配

1、边界匹配

eg.判断一个账号是不是qq号。原则是,数字是4位到8位的,都认为是qq号。

#coding=utf-8

importre#qq号长度范围是4到8位

qq = "100000001"r= re.findall("^\d{4,8}",qq)print(r)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test11.py"#['10000000']

分析:qq = "100000001"是10位,但是确实也能匹配到8个数字,但是其实这串数有十个,就不是个qq号,那这样就算误判了

怎么处理呢?

(1)加个逻辑,把匹配出来的字符串和qq比较,想等,则认为是qq,否则不是;太麻烦,不推荐

(2)加边界修饰符$

#coding=utf-8

importre#qq号长度范围是4到8位

qq = "100000001"r= re.findall("^\d{4,8}$",qq)print(r)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test11.py"#[]

匹配出来是[],说明没有满足条件的字符

那么,想一下,为什么有这个效果。分析^\d{4,8}$这个正则表达式

^:从字符串开始的位置匹配,$:从字符串的末尾匹配,匹配的字符串是4到8位的;如果匹配不到,就[],如果能匹配到,就返回匹配字符串。

2、指定字符组合的重复;前面python{3},这种,只是指的n重复出现3次的匹配出来;要匹配pythonpythonpython中的python(字符组合)的3次匹配要怎么办?

用小括号给字符组括起来,表示是要讲这个字符组和匹配3次;(python){3}

结果有问题。。。。

#coding=utf-8

importre#qq号长度范围是4到8位

qq = "pythonpythonpythonpython"r= re.findall("(python){3}",qq)print(r)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test11.py"#['python']

3、匹配模式

大小写:

re.findall('c#',a,re.I)的第三个参数

#coding=utf-8

importre

a= "C#|c#"r= re.findall('c#',a,re.I)print(r)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test12.py"#['C#', 'c#']

多类匹配模式(大小写、空白字符)

#coding=utf-8

importre

a= "C#|c#\n"r= re.findall('c#.{1}',a,re.I|re.S)print(r)#[Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test12.py"#['C#|', 'c#\n']

解析:.表示匹配除了\n 换行符,任意的字符,re.S 表示匹配空白字符(解析不一定对哦。。。瞎写的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值