[Python初学者]以易于理解的方式解释正则表达式!使用re模块进行操作

“常用表达…?”

在研究Python时,出现了“正则表达式”一词,但是由于它是一个陌生的词,所以许多人最终对它们的理解还很模糊。

但是如果你网页抓取和文本数据处理如果您正在学习Python做了解正则表达式至关重要是!

如果陈述在其中写入数十行的过程通过使用正则表达式,它需要几行通常是这种情况。

在本文中,我们将讨论对代码简化至关重要的正则表达式。含义/类型/用法我会解释这样的事情。

阅读本文以掌握正则表达式的基础!

对于那些担心学习Python编程的人

我开始学习Python是因为我想学习AI和数据科学
“您自己可以学到的东西是有限的。”
我想推荐给那些感到不安的人爱德美高级计划
有关AI的各种课程彻底的指导指导是功能!

对于那些想学习Python以便实践的人来说,首先自由”在线咨询参与在请尝试。

什么是Python正则表达式?

什么是正则表达式?表示字符串的模式是。

例如,假设您要在网页上查找电话号码。

许多人都知道Ctrl + F键(Windows)和Command + F键(Mac),因此请键入“电话号码”以查找“写电话号码的位置”并靠近它。查找所写的电话号码。

但是,当用“ tel”和“联系信息”之类的文字代替“电话号码”书写时,此方法无效。

正则表达式“用模式表达字符串”是什么?如何排列“○○○-○○○○-○○○○○”等字符指。

如果按“○○○-○○○○○-○○○○”的顺序(模式)查找字符串,则很可能可以找到站点上的所有电话号码(当然,区号是两位数)。有时,正则表达式很灵活)。

Python规范表达式类型

在正则表达式中,电话号码(例如“ 090–1234-5678”)可以由诸如“○○○-○○○○○-○○○○○”的模式表示。

在实际程序中“ \ D”是一组数字,而不是○用表示。

那是,“○○○-○○○○-○○○○○”可以表示为“ \ d \ d \ d- \ d \ d \ d \ d \ d- \ d \ d \ d \ d”

下表总结了一组字符(特殊序列),例如“ \ d”。

表达 含义
\ d 数字(0-9)
\ D 除了数字(0-9)
\ w 字母/数字/下划线
\ W 除了字母,数字和下划线
\与 空格,换行符,制表符
\ WITH 除了空格,换行符和制表符

具体示例将在后面介绍。

另外,对于正则表达式具有特殊功能的字符称为元字符有。

元字符的类型和含义以及具体示例如下。

元字符 含义 具体例子
? 前一个字符/组的0或1个出现 (wo)?man wo可能会或可能不会在场
* 重复上一个字符/组0次或更多次 321 *
+ 重复一个或多个上一个字符/组 321+
{n} 重复前一个字符/组的n次 \ d {3}
{n,m} 重复前一个字符/组的n到m次 \ d {2,3}
{n,} 重复前一个字符/组的n次或多次 {3}
{,m} 重复0到m次上一个字符/组 {3}
[] 匹配[]中的任何一个字符 [aeiou]
[^] 匹配[]中的字符以外的任何一个字符 [^ aeiou]
. 匹配换行符以外的任何单个字符 。一种
^ 与字符串开头匹配 ^我
$ 与字符串结尾匹配 你$
| 要么 狗|猫

Python正则表达式的基本用法(模式匹配)

在Python中,请按照以下步骤操作使用正则表达式进行模式匹配我可以。

导入正则表达式模块

在Python中使用正则表达式需要重新组装将会。

您可以通过这种方式导入re模块。

import re

现在,您拥有了用于正则表达式的所有工具。

使用re.compile()函数创建一个Regex对象

如果将字符串模式传递给re.compile()函数,则将返回带有传递的模式信息的Regex对象。

phone_regex = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')  # rを書くことで\を文字として扱う

在这里,我通过了“○○○-○○○○-○○○○○”型电话号码模式。

将要搜索的字符串传递给Regex对象的search()方法

在您之前获得的Regex对象上调用search()方法,并将要搜索的字符串作为参数传递。

如果找到了模式,则返回Match对象。

通常将mo用于Match对象。

mo = phone_regex.search('私の名前は長嶋貞治です。42歳です。電話番号は090-1234-5678です。郵便番号は100-2345です。ご用がある方はこちらへどうぞ。よろしくお願いします。')

在Match对象上调用group()方法

最后,在Match对象上调用group()方法将返回匹配的文本。

print('電話番号: ', mo.group())

这样就可以使用正则表达式完成模式匹配。

这是到目前为止的程序摘要。

import re
phone_regex = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')  # rを書くことで\を文字として扱う
mo = phone_regex.search('私の名前は長嶋貞治です。42歳です。電話番号は090-1234-5678です。郵便番号は100-2345です。ご用がある方はこちらへどうぞ。よろしくお願いします。')
print('電話番号: ', mo.group())

通过更改样式和要搜索的文本进行实验。

如果要搜索的文本中存在多个匹配模式,则search()方法返回在Match对象中找到的第一个字符串。

如果要全部获取,请使用findall()方法查找包含所有匹配模式的字符串。清单将被退回。

Python正则表达式的贪婪和非贪婪匹配

(喵){2,4}(意思是:重复喵2-4次)’MeowMeowMeowMeowMeow’模式与字符串匹配时将返回什么?

作为候选人’MeowMeow’、’MeowMeowMeow’、’MeowMeowMeowMeow’が挙げられます。

理论上一切都正确,但是在Python正则表达式中最多重复了4次。’MeowMeowMeowMeow’が返ってきます。

匹配图案时如果有多个匹配的候选者,Python默认返回最长的候选者

这东西贪婪的比赛叫做

如果您想匹配最短的一个(非贪婪的比赛)然后在(喵){2,4}中的{}之后添加?。

meow_text = 'MeowMeowMeowMeowMeow'  # 検索対象のテキスト

meow_regex1 = re.compile(r'(Meow){2,4}')  # 贪婪的比赛
meow_regex2 = re.compile(r'(Meow){2,4}?')  # 非贪婪的比赛

mo1 = meow_regex1.search(meow_text)  # 贪婪的比赛
mo2 = meow_regex2.search(meow_text)  # 非贪婪的比赛

print('貪欲マッチ:', mo1.group())  # 贪婪的比赛: 喵喵喵喵喵
print('非貪欲マッチ:', mo2.group())  # 非贪婪的比赛: 喵喵

Python规范表达式对于文本处理至关重要

本文介绍了Python规范表达式。

如您所知,正则表达式对于检索文本信息至关重要。

在写之前,有很多事情是您无法理解的。

让我们编写许多程序并学习正则表达式!

参考:

撰写本文的人

Yuuu

网络营销商。 統計学やAIにも興味があり、 使用Python / Octave学习数据科学, G検定に合格したりしている。