python 正则匹配电话与ip

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

有一段时间没写正则表达式,略有点生疏,赶紧写两个练练手

#!/usr/bin/env python
#coding:utf-8

import re

#匹配电话号码
def match_phone_num():
    phone_num = re.compile("0\d{2}-\d{8}|0\d{3}-\d{7}")
    search = phone_num.search("010-123456789")
    if search:
        print search.group()

#匹配ip
def match_ip():
    ip = re.compile("((?P<ThreeNum>2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)")
    search = ip.search("192.168.123.125aaa")
    if search:
        print search.group()

注意给捕获组命名的写法
电话号码的这个表达式能匹配两种以连字号分隔的电话号码:一种三位区号,8位本地号(如010-68943652),一种4位区号,7位本地号(0376-2980456)
ip的正则匹配表达式稍作分析能明白,不再细述

选取靓号 数字全部相同的号码(AAAAAA)
(\d)\1{6,}
首先会获取第一位为0-9的数字,然后\1引用第一组里面内容然后重复6次或者6次以上.

匹配from 后面的一个单词(后向界定)
注意在python和Perl中两个反向界定的表达式exp只允许使用定长文本,如果写成如下的正则表达式,会报错

pattern = re.compile(r"(?<=from\s+)\b\w+\b",re.I)
sre_constants.error: look-behind requires fixed-width pattern

允许的写法:
pattern = re.compile(r"(?<=from )\b\w+\b",re.I)
此时反向界定的表达式就是定长的

匹配 from前面的一个单词(前向界定)
前向界定的表达式exp中就允许非定长文本
pattern = re.compile(r"\b\w+\b(?=\s+from)",re.I)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值