常用的正则表达式(python)

写在前面

python的re模块中有3个方法

  • search(pattern, string, flags=0),在string中查找匹配pattern的字串,找到一个就会返回一个match对象,可以直接print返回的结果,也可以使用groups()来查看分组的情况。若是没有找到匹配,返回None。
  • match(pattern, string, flags=0),查看string的开头部分是否匹配pattern,匹配的化就把匹配结果返回,也是一个match对象。若是没有找到匹配,返回None。
  • matchall(pattern, string, flags=0),查看整个string是否匹配pattern,返回的情况和match方法是一样的

匹配URL

import re
# fullmatch,将regex应用到整个字串中
# 判断一个给定的字符串是否是合法的URL 
fullmatch_r1 = r'(https?://)?([\da-z-]+\.)+([a-z]+)/?(\w+/)*([-\.\w]+)?(\?\w+=\w+(\&\w+=\w+)*)?'
for url in ['http://my.com?name=tt', 'http://student.shu.edu/tutor/cs/index.html', 
'https://mail.shu.edu/index.html?name=tt&age=25']:
    print(re.fullmatch(fullmatch_r1, url))

解析

  1. (https?://)? 表示可以接受的协议是http和https,不过也允许不带协议,圆括号中的内容就看成是一个小的pattern,需要括号中的元素同时出现。最外面的?表示表示有或者没有协议。
  2.  ([\da-z-]+\.)+ 这是在解析url的非顶级域名部分,域名中允许出现数字,小写字母以及连字符,各级域名用.隔开。
  3.  ([a-z]+) 解析url的顶级域名部分
  4.  /? 斜杠可要可不要,因为不好断定接下来是否还有文件路径
  5.  (\w+/)* 路径数量大于等于0,每一级用/分隔,这里我们只允许路径(目录)中出现数字和字母
  6.  ([-\.\w]+)? 解析文件,可能会有文件
  7.  (\?\w+=\w+(\&\w+=\w+)*)? 这是解析参数的部分。如果url带有参数那么,首先要以?打头。

判断一个字符串是否是合法数字

合法的要求如下:

  •  正数前面可以不要+
  •  小数点前后必须要有数字
  •  科学计数法可用的符号是e和E,且前面要有数字,后面允许出现正负数
import re
#判断一个字符串是否是合法的计算机数字表示形式
# 正数前面可以有+,也可以没有。
# 小数点前后都得有数字
# 科学计数法e或者E前面得有数字,后面必须是[+-]?
num_pattern = r'^[+-]?\d+(\.\d+)?((e|E)[+-]?\d+)?$'
for num in ['112','-112','13.3', '12.3e12']:
    print(re.match(num_pattern, num))

for num in ['1.', '12.3e', '3e-', '2.3e12.']:
    print(re.match(num_pattern, num))

解析

  1. 模式串首尾的^和$分别表示匹配字符串的开头和结尾。
  2. ^[+-]?\d+ 表示合法数字可以以正负号或者数字开头,可以没有没有正负号,但必须要有数字
  3. (\.\d+)? 因为前面我们已经要求必须要有数字,所以这里可以只考虑小数点的后面。小数点必须要和其后的数字同时常出现才合法。小数点至多出现一次。
  4. (( |E)[+-]?\d+)? 同样地,e或E前面一定有数字,所以只需要要求e或E在出现时,其后跟着一个正数或负数。e或E也至多出现一次。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值