我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python正则表达式的使用方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python正则表达式的使用方法是什么

这篇文章主要讲解了“Python正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python正则表达式的使用方法是什么”吧!

什么是正则表达式?

简而言之,正则表达式(regex)用于探索给定字符串中的固定模式。

我们想找到的模式可以是任何东西。

可以创建类似于查找电子邮件或手机号码的模式。还可以创建查找以a开头、以z结尾的字符串的模式。

在上面的例子中:

import re pattern = r'[,;.,–]' print(len(re.findall(pattern,string)))

我们想找出的模式是  r’[,;.,–]’。这个模式可找出想要的4个字符中的任何一个。regex101是一个用于测试模式的工具。将模式应用到目标字符串时,呈现出以下界面。

Python正则表达式的使用方法是什么

如图所示,可以在目标字符串中根据需要找到,;.,–。

每当需要测试正则表达式时,都会用到上面的工具。这比一次又一次运行python要快得多,调试也容易得多。

现在我们已经可以在目标字符串中找到这些模式,那么如何真正创建这些模式呢?

创建模式

使用正则表达式时,首先需要学习的是如何创建模式。

接下来将对一些最常用的模式进行逐一介绍。

可以想到最简单的模式是一个简单的字符串。

pattern = r'times' string = "It was the best of times, it was the worst of times." print(len(re.findall(pattern,string)))

但这并不是很有用。为了帮助创建复杂的模式,正则表达式提供了特殊的字符/操作符。下面来逐个看看这些操作符。请等待gif加载。

1.[]操作符

这在第一个例子中使用过,可用于找到符合这些方括号中条件的一个字符。

[abc]-将查找文本中出现的所有a、b或c

[a-z]-将查找文本中出现的所有从a到z的字母

[a-z0–9A-Z]-将查找文本中出现的所有从A到Z的大写字母、从a到z的小写字母和从0到9的数字。

Python正则表达式的使用方法是什么

可以很容易地在Python中运行下列代码:

pattern = r'[a-zA-Z]' string = "It was the best of times, it was the worst of times." print(len(re.findall(pattern,string)))

除了.findall,正则表达式还有很多其他功能,稍后会涉及到。

2.点算符

点运算符(.) 用于匹配除换行符以外的任何字符。

运算符最大的优点是,它们可以结合使用。

例如,想在字符串中找出以小d或大写D开头,以字母e结尾,包含6个字母的子字符串。

3.一些元序列

在使用正则表达式时,一些模式会经常被用到。因此正则表达式为这些模式创建了一些快捷方式。最常用的快捷方式如下:

\w,匹配任何字母、数字或下划线。相当于[a-zA-Z0–9_]

\W,匹配除字母、数字或下划线以外的任何内容。

\d,匹配任何十进制数字。相当于[0–9]。

\D,匹配除十进制数字以外的任何数字。

4.加号和星形运算符

点算符只是用于获取任何字符的单个实例。如果想找出更多实例要怎么做呢?

加号+用于表示最左边字符的一个或多个实例。

星号*用于表示最左边字符的0个或多个实例。

例如,如果想找出所有以d开头,以e结尾的子字符串,d和e之间可以没有也可以有多个字符。我们可以用:d\w*e

如果想找出所有以d开头,以e结尾的子字符串,在d和e之间至少有一个字符,我们可以用:d\w+e

还可以使用更为通用的方法:用{}

\w{n} - 重复\w 正好n次。

\w{n,} - 重复\w至少n次,或者更多次。

\w{n1, n2} - 重复 \w 至少n1次,但不超过n2次。

5.^插入符号和$美元符号。

^插入符号匹配字符串的开始,而$美元符号则匹配字符串的结尾。

6.单词边界

这是一个重要的概念。

有没有注意到,在上面的例子中,总是匹配子字符串,而不是匹配单词?

如果想找出所有以d开头的单词呢?

可以使用d\w*模式吗?下面用网络工具来试一试吧。

正则表达式函数

目前为止,只使用了 re包中的findall 函数,其实还有很多其他函数。下面来逐个介绍。

1. findall

上面已经使用了 findall。这是我最常使用的一个。下面来正式认识一下这个函数吧。

输入:模式和测试字符串

输出:字符串列表。

#USAGE: pattern = r'[iI]t' string = "It was the best of times, it was the worst of times." matches = re.findall(pattern,string) for match in matches: print(match)------------------------------------------------------------ It it

2.搜索

输入:模式和测试字符串

输出:首次匹配的位置对象。

#USAGE: pattern = r'[iI]t' string = "It was the best of times, it was the worst of times." location = re.search(pattern,string) print(location) ------------------------------------------------------------ <_sre.SRE_Match object; span=(0, 2), match='It'>

可以使用下面编程获取该位置对象的数据:

print(location.group()) ------------------------------------------------------------ 'It'

3.替换

这个功能也很重要。当使用自然语言处理程序时,有时需要用X替换整数,或者可能需要编辑一些文件。任何文本编辑器中的查找和替换都可以做到。

输入:搜索模式、替换模式和目标字符串

输出:替换字符串

  1. string = "It was the best of times, it was the worst of times." 

  2. string = re.sub(r'times', r'life', string) 

  3. print(string) 

  4. ------------------------------------------------------------ 

  5. It was the best of life, it was the worst of life. 


案例研究

正则表达式在许多需要验证的情况下都会用到。我们可能会在网站上看到类似这样的提示:“这不是有效的电子邮件地址”。虽然可以使用多个if和else条件来编写这样的提示,但正则表达式可能更具优势。

1.PAN编号

在美国,SSN(社会安全号码)是用于税务识别的号码,而在印度,税务识别用的则是  PAN号码。PAN的基本验证标准是:上面所有的字母都必须大写,字符的顺序如下:

那么问题是:

“ABcDE1234L”是有效的PAN号码吗?

如果没有正则表达式,该如何回答这个问题呢?可能会编写一个for循环,并进行遍历搜索。但如果用正则表达式,那就像下面这样简单:

match=re.search(r&rsquo;[A-Z]{5}[0&ndash;9]{4}[A-Z]&rsquo;,'ABcDE1234L') if match:  print(True) else:  print(False) ----------------------------------------------------------------- False

2.查找域名

有时我们必须从一个庞大的文本文档中找出电话号码、电子邮件地址或域名等。

例如,假设有以下文本:

<div class="reflist" style="list-style-type: decimal;"> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b>^ ["Train (noun)"](http://www.askoxford.com/concise_oed/train?view=uk). <i>(definition &ndash; Compact OED)</i>. Oxford University Press<span class="reference-accessdate">. Retrieved 2008-03-18</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3ATrain&rft.atitle=Train+%28noun%29&rft.genre=article&rft_id=http%3A%2F%2Fwww.askoxford.com%2Fconcise_oed%2Ftrain%3Fview%3Duk&rft.jtitle=%28definition+%E2%80%93+Compact+OED%29&rft.pub=Oxford+University+Press&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li> <li id="cite_note-2"><span class="mw-cite-backlink"><b>^</b></span> <span class="reference-text"><span class="citation book">Atchison, Topeka and Santa Fe Railway (1948). <i>Rules: Operating Department</i>. p. 7.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3ATrain&rft.au=Atchison%2C+Topeka+and+Santa+Fe+Railway&rft.aulast=Atchison%2C+Topeka+and+Santa+Fe+Railway&rft.btitle=Rules%3A+Operating+Department&rft.date=1948&rft.genre=book&rft.pages=7&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li> <li id="cite_note-3"><span class="mw-cite-backlink"><b>^ [Hydrogen trains](http://www.hydrogencarsnow.com/blog2/index.php/hydrogen-vehicles/i-hear-the-hydrogen-train-a-comin-its-rolling-round-the-bend/)</span></li> <li id="cite_note-4"><span class="mw-cite-backlink"><b>^ [Vehicle Projects Inc. Fuel cell locomotive](http://www.bnsf.com/media/news/articles/2008/01/2008-01-09a.html)</span></li> <li id="cite_note-5"><span class="mw-cite-backlink"><b>^</b></span> <span class="reference-text"><span class="citation book">Central Japan Railway (2006). <i>Central Japan Railway Data Book 2006</i>. p. 16.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3ATrain&rft.au=Central+Japan+Railway&rft.aulast=Central+Japan+Railway&rft.btitle=Central+Japan+Railway+Data+Book+2006&rft.date=2006&rft.genre=book&rft.pages=16&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li> <li id="cite_note-6"><span class="mw-cite-backlink"><b>^ ["Overview Of the existing Mumbai Suburban Railway"](http://web.archive.org/web/20080620033027/http://www.mrvc.indianrail.gov.in/overview.htm). _Official webpage of Mumbai Railway Vikas Corporation_. Archived from [the original](http://www.mrvc.indianrail.gov.in/overview.htm) on 2008-06-20<span class="reference-accessdate">. Retrieved 2008-12-11</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3ATrain&rft.atitle=Overview+Of+the+existing+Mumbai+Suburban+Railway&rft.genre=article&rft_id=http%3A%2F%2Fwww.mrvc.indianrail.gov.in%2Foverview.htm&rft.jtitle=Official+webpage+of+Mumbai+Railway+Vikas+Corporation&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li> </ol> </div>

需要从上面文本中找出这里所有的域名&mdash;&mdash;  askoxford.com;bnsf.com;hydrogencarsnow.com;mrvc.indianrail.gov.in;web.archive.org

该怎么做?

match=re.findall(r'http(s:|:)\/\/(www.|ww2.|)([0-9a-z.A-Z-]*\.\w{2,3})',string) for elem in match:  print(elem) -------------------------------------------------------------------- (':', 'www.', 'askoxford.com') (':', 'www.', 'hydrogencarsnow.com') (':', 'www.', 'bnsf.com') (':', '', 'web.archive.org') (':', 'www.', 'mrvc.indianrail.gov.in') (':', 'www.', 'mrvc.indianrail.gov.in')

这里用到了or运算符,match返回元组,保留()里的模式部分。

3.查找电子邮件地址:

下面的正则表达式用于在长文本中查找电子邮件地址。

match=re.findall(r'([\w0-9-._]+@[\w0-9-.]+[\w0-9]{2,3})',string)

这些都是高级示例,提供的信息已经足够帮你理解这些示例了。

感谢各位的阅读,以上就是“Python正则表达式的使用方法是什么”的内容了,经过本文的学习后,相信大家对Python正则表达式的使用方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python正则表达式的使用方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python正则表达式的使用方法是什么

这篇文章主要讲解了“Python正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python正则表达式的使用方法是什么”吧!什么是正则表达式?简而言之,正则表达式(r
2023-06-16

JS正则表达式的使用方法是什么

本篇内容主要讲解“JS正则表达式的使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS正则表达式的使用方法是什么”吧!测试字符串是否合规这种特性常被用来检测前端输入的字段是否符合要求
2023-07-06

JavaScript中正则表达式的使用方法是什么

这篇文章主要讲解了“JavaScript中正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中正则表达式的使用方法是什么”吧!一、什么是正则表达式是
2023-06-22

在python正则表达式中是怎样正确使用正则表达式

这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python
2023-06-17

.NET正则表达式最佳的使用方法是什么

本文小编为大家详细介绍“.NET正则表达式最佳的使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“.NET正则表达式最佳的使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。.NET 中的正则
2023-06-29

正则表达式grep的用法是什么

grep命令是一个在Linux和Unix系统中常用的命令,用于在文件或标准输入中查找符合给定模式的内容,并将其输出到标准输出。grep命令的基本用法是:grep [选项] 模式 文件名其中,选项常用的有:-i:忽略大小写-v:反向选择
正则表达式grep的用法是什么
2024-03-08

JavaScript通过RegExp使用正则表达式的方法是什么

本篇内容介绍了“JavaScript通过RegExp使用正则表达式的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RegExpEC
2023-07-05

使用正则表达式数字检验的方法是什么

使用正则表达式数字检验的方法是通过在正则表达式中使用特定的字符或字符集来匹配数字。以下是一些常见的正则表达式数字检验方法:1. 匹配任意数字:\d2. 匹配1个或多个数字:\d+3. 匹配0个或多个数字:\d*4. 匹配指定数量的数字:\d
2023-05-31

oracle正则表达式替换的方法是什么

在Oracle中,可以使用REGEXP_REPLACE函数来进行正则表达式替换。语法:REGEXP_REPLACE(source_string, pattern, replacement [, start_position [, occ
oracle正则表达式替换的方法是什么
2024-04-09

oracle正则表达式匹配的方法是什么

Oracle中使用正则表达式匹配的方法是使用REGEXP_LIKE函数。REGEXP_LIKE函数用于检查一个字符串是否符合指定的正则表达式模式。它接受三个参数:待检查的字符串、正则表达式模式和可选的标志。例如,以下查询使用REGEXP
oracle正则表达式匹配的方法是什么
2024-04-09

python使用正则表达式的方法有哪些

在Python中,可以使用re模块来使用正则表达式。以下是一些使用正则表达式的方法:1. re.match(pattern, string): 从字符串的开头开始匹配正则表达式,并返回匹配结果。如果匹配成功,返回一个匹配对象;否则返回Non
2023-08-18

PHP正则表达式转义的方法是什么

本篇内容主要讲解“PHP正则表达式转义的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP正则表达式转义的方法是什么”吧!正则表达式是一种用于匹配字符串的强大工具,它可以方便地进行字
2023-07-05

Java匹配正则表达式的方法是什么

这篇文章主要介绍了Java匹配正则表达式的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java匹配正则表达式的方法是什么文章都会有所收获,下面我们一起来看看吧。一.我们先举个例子来看看Java匹配正
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录