速刷正则表达式一周目(上)

简介: 速刷正则表达式一周目(上)

前言:

在文本查找方面,你可能很熟悉ctrlF,输入你想要查找的词。但正则表达式在此基础上更进一步,它可以通过位置、模式以及通配符等进行快速查找。本篇文章将以千字左右篇幅,带你速刷正则表达式的一些简单内容以及实战。

一、不使用正则表达式筛选电话号码

众所周知,电话号码由三部分组成,例如:132-3233-7777,是由3位网号+4位HLR号+4位的个人代码。假定我们构建一个函数,筛选广电号段的电话号码(中国广电号段:192),有如下操作


def phoneNumber(text):#1

   if len(text) != 11:#2

       return False

   if text[0:3] != '192':#3

       return False

   for i in range(0,11):#4

       if not text[i].isdecimal():#4

           return False

   return True

print(phoneNumber('12345557656'))

print(phoneNumber('19233333333'))

首先#1使用def定义函数phoneNumber(),#2判断文本长度是否等于11位,若不等于,则返回False。#3遍历文本前三位,如果不等于192,则返回False,#4遍历全11位,如果不是纯数字,则返回False。


输出如下:


4e062116c2f24602a604a8abb11c51bc.png


可以看到相当麻烦,接下来,以正则表达式查找文本。


二、使用正则表达式筛选电话号码

创建正则表达式对象

     


import re

phoneNumber = re.compile(r'1\d\d\d\d\d\d\d\d\d\d')

mo = phoneNumber.search('My number is 17543405207')

print("My phone number is " + mo.group())#变量名mo是一个通用的名称

输出如下




复习:

第一步:使用import re导入正则表达式模块。


第二步:用re.compile()函数创建一个Regex对象(使用原始字符串)。


第三步:想Regex对象的search()方法传入想查找的字符串。它返回一个Match对象。


第四步:调用Match对象的group()方法,返回实际匹配文本的字符串。


三、利用括号分组

import re

phoneNumber = re.compile(r'(\d\d\d)-(\d\d\d\d-\d\d\d\d)')

mo = phoneNumber.search('My phone number is 175-4340-5207')

mo.group(1)

mo.group(0)

mo.group(2)

输出如下



06962364f4af40fbabf8b61873ba7cbe.png

如果需要一次获取全部分组,使用groups()


四、用管道匹配多个分组

字符|被称为管道,希望匹配许多表达式中的一个时,可以有如下操作


color = re.compile(r'red|blue')

mo1 = color.search('red and blue')

mo1.group()

mo2 = color.search('blue and red')

mo2.group()

如果希望匹配'Batman'、'Batmobile'、'Batcopter'


bat = re.compile(r'Bat(man|mobile|copter)')

mo = bat.search('Batmobile lost a wheel')

mo.group()

mo.group(1)

dio用mo.group()返回完全匹配的文本'Batmobile',而mo.group(1)只是返回了第一个括号分组内的文本'mobile'


如果需要匹配真正的管道字符,就要用到转义字符。


目录
相关文章
|
3月前
让星星⭐月亮告诉你,打印完全格式的日期格式 包含 年月日时分秒毫秒
此方法用于获取完整的日期时间格式,返回值形如“2020-06-30 15:15:15:015”,精确到毫秒。通过`Calendar`类获取当前时间的年、月、日、时、分、秒及毫秒,并将其格式化拼接成字符串返回。
32 1
|
8月前
|
Java Maven
判断一个日期,如果是今天或者是昨天 显示【今天 XX:XX 昨天 XX:XX】其他时间显示【XXXX-XX-XX XX:XX】
判断一个日期,如果是今天或者是昨天 显示【今天 XX:XX 昨天 XX:XX】其他时间显示【XXXX-XX-XX XX:XX】
84 1
|
6月前
|
JavaScript 前端开发
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
125 0
|
8月前
|
数据处理 Python
Python基础教程——日期与时间
Python基础教程——日期与时间
将字符串转为时间晚了5天,避坑指南
将字符串转为时间晚了5天,避坑指南
66 1
|
数据采集 C++ Python
爬虫基础--第一天
本次系列主要记录我学爬虫的一些精髓之处,值得一看。
114 0
|
缓存 搜索推荐 定位技术
速刷html一周目(下)
速刷html一周目(下)
81 0
速刷html一周目(上)
速刷html一周目(上)
81 0
|
Java API Spring
freemarker 时间显示不正常 设置时区
项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明
301 0

热门文章

最新文章