电话号码正则表达式语法 python正则表达式详解

通过前面的学习,我们知道调用请求库可以抓取HTML页面,调用美汤库可以解析HTML页面。但是通常一个HTML页面的信息很多,你不可能全部拿走,手动修改,所以需要使用Re正则表达式来提取页面的关键信息。什么是正则表达式?Re:正则表达式,可以简洁优雅地表达一组字符串。例如:"...

通过前面的学习,我们知道调用请求库可以抓取HTML页面,调用美汤库可以解析HTML页面。但是通常一个HTML页面的信息很多,你不可能全部拿走,手动修改,所以需要使用Re正则表达式来提取页面的关键信息。

什么是正则表达式?

Re:正则表达式,可以简洁优雅地表达一组字符串。

例如:

"Py""Pyt""Pyth""Pytho""Python"

这几串有什么相似之处?没错,就是都是基于”Py & # 8221开始的时候。

我们用了五行来枚举所有的字符串。如果我们用Re来代替呢?好吧,好吧!

Py(t|th|tho|thon)?N

只是五行串而已。万一是几千行呢?那个正则表达式用起来不是特别爽吗?

“一行胜千言”—正则表达式

正则表达式最本质的特征是:简洁、优雅,一行胜千言。

在我看来,就像苹果LOGO一样,周围都是极简的美。

还有一个词:求同存异

让我们来看看正则表达式的语法:

正如上面所展示的,正则表达式由字符和操作符构成。

如上图所示,正则表达式由字符和运算符组成。

常见运算符

看看正则表达式的一些经典例子:

^[A-Za-z]+$ 由26个字母组成的字符串^-?d+$ 整数形式的字符串[1-9]d{5} 中国境内邮政编码d{3}-d{8}|d{4}-d{7} 国内电话号码

Python中的Re库

Python为正则表达式提供了标准的库Re,用来匹配字符串。

调用Re库:

import re

正则表达式的表达式类型:

Re库采用raw string类型表示正则表达式,形式为:r’text’。

例如:r '[1-9]d[5]’

原始字符串类型是本机字符串类型,转义字符不能再次转义。

Re库还可以采用string类型表示正则表达式,更为繁琐,形式为’text’。

例如:“[1-9]\ d { 5 } ’

先前的”是一个转义字符。

当正则表达式包含转义字符时,更推荐使用原始字符串类型。

RE库的基本方法:

先介绍一下Match对象:

匹配对象是一次匹配的结果,包含大量匹配信息。

和response对象一样,Match对象也有一些属性和方法。

像响应对象一样,匹配对象也有一些属性和方法。

Match对象的属性

匹配对象的属性

匹配对象方法

前面已经介绍过如何调用对象的属性和方法了,这里就不再赘述,可以百度做深入了解。

我已经介绍过如何调用对象的属性和方法,这里就不再赘述了。我可以从百度上了解更多关于他们的信息。

Re的六种基本方法

下面重点介绍搜索方法:

re.search(pattern, string, flags=0)

在字符串中搜索匹配正则表达式的第一个位置,并返回一个***tch对象。

pattern:正则表达式的字符串或者原生字符串表示string:带匹配的字符串flags:正则表达式使用时的控制标记

标志标志值

# 使用search方法匹配字符串***tch = re.search(r'[1-9]d{5}', 'A100001', flags=re.I)# 匹配成功则返回匹配后的字符串if ***tch: print(***tch.group(0))

注意:Match对象返回匹配结果,所以匹配返回值是bool变量,所以用条件语句判断。

环库的方法并不太难用。以下是其余方法的总结:

关于。Match (pattern,string,flags = 0)从字符串的开头匹配正则表达式,并返回一个Match对象。

参数同上。

关于。find all (pattern,string,flags = 0)搜索一个字符串,并返回可以匹配为列表类型的所有子字符串。

参数同上。

Re.split (pattern,string,***xsplit = 0,flags = 0)根据正则表达式匹配的结果拆分字符串,并返回列表类型。

***xsplit:最大分割数,剩余部分作为最后一个元素输出

关于。Finder (pattern,string,flags = 0)搜索字符串并返回与结果匹配的迭代类型。每个迭代元素都是一个匹配对象。

参数同上。

for m in re.finditer(r'[1-9]d{5}', 'A100001 B100002'): if m: print(m.group(0))

re sub(pattern,repl,string,count = 0,flags = 0)替换字符串中匹配正则表达式的所有子字符串,并返回被替换的字符串。

repl:替换匹配字符串的字符串count:匹配的最大替换次数sub = re.sub(r'[1-9]d{5}', ',hello', 'A100001 B100002')print(sub)

Re库的等效使用

上面解释了Re库的六个基本方法的功能用法,下面介绍另一个等价的面向对象用法:

***tch = re.search(r'[1-9]d{5}', 'A100001')cmp = re.compile(r'[1-9]d{5}')***tch = cmp.search('A100001')

第一种是功能用法,一次操作就能完成任务;第二种是面向对象的用法,将字符串形式的正则表达式编译成正则表达式对象,然后进行方法运算。两种方法都有可能,理解就好。

Re库的贪婪匹配机制

在实际使用中,我们会遇到如下问题:

***tch = re.search(r'PY.*N', 'PYANBNCN')

对于这样的字符串,原则上可以返回三个子字符串,即’PYAN & # 8217,’宾’,’PYANBNCN & # 8217。但是当我们调用***tch.group(0)进行检查时,应该返回哪一个呢?

Re库默认采用贪婪匹配机制,返回匹配中最长的子串,即返回’PYANBNCN & # 8217走吧。

还有一个问题。想输出最短的子串,应该怎么做??

我们只需在操作符后面添加?即可输出最小匹配了:

我们只需要在运算符后面加上?可以输出的最小匹配:

最小匹配

***tch = re.search(r'PY.*?N', 'PYANBNCN')if ***tch: print(***tch.group(0))

总结

本章解释了Python中正则表达式Re库的入门级用法。正则表达式并不是Python独有的,可以在很多地方使用。学习Re库后,对其他语言和任务也有帮助。

本文来自笑醉生梦投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/608328.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-26
下一篇 06-26

相关推荐

  • python正则表达式语法大全 正则表达式语法大全

    李丹刚在一家经销店找到了新工作。他的工作是给那些在评论页面留下电话号码的顾客打电话。不过让李丹恼火的是,评论是以自由文本的形式呈现的,电话号码就在这些评论里。不需要一个一个***粘贴,如何轻松找到这些电话号码?Python中的正则表达式(re)可以解决这个问题!正则表

    2023-07-28 04:17:01
    387 0
  • js正则表达式语法大全 js正则验证特殊字符

    0.指导在正文开始之前,先说一下什么是正则表达式,为什么要用正则表达式。在我看来,正则表达式是一个程序可以识别的规则。有了这个规则,程序可以帮助我们判断某些字符是否符合我们的要求。但是我们为什么要使用正则表达式呢?我们来看一个常规的业务场景,验证一串字符是否

    2023-07-22 22:17:01
    542 0
  • jq正则表达式用法 正则表达式语法大全

    正则表达式简介定义是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。功能函数我们经常用正则表达式来进行:(1)验证(2)替换文本(3)查找定义的格式可以用两种方式来定义:1)var re =/pattern/[flags]2)var re= new RegExp("pattern",["flags"])pattern

    2023-07-19 07:56:01
    169 0
  • 电话号码正则表达式语法 python正则表达式详解

    通过前面的学习,我们知道调用请求库可以抓取HTML页面,调用美汤库可以解析HTML页面。但是通常一个HTML页面的信息很多,你不可能全部拿走,手动修改,所以需要使用Re正则表达式来提取页面的关键信息。什么是正则表达式?Re:正则表达式,可以简洁优雅地表达一组字符串。例如:"

    2023-06-26 15:52:01
    159 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信