正则表达式,其实你只需要一章就能学到手!

给刚开始学习的小伙伴一个建议,刚学习不要好高骛远,要脚踏实地,才能好好学会。还有不能中途放弃。更要有个好的学习环境,遇到不懂的问题有人指点指点就最好了。我给大家推荐一下我的学习基地群:58937142 里面有很多基础资料,进阶资料,框架也有一部分,爬虫就更多了,是个不错的学习地方,小编在这里邀请大家加入我们学习基地,大家一起学习共同进步。欢迎大家的到来!

正则表达式

正则表达式(RegEx)是一种简洁的方式,用于确定字符序列应如何在字符串中匹配。通常大家都认为它们是“可怕”的,但是,正如你所知道的,任何包含在恐惧中的东西通常都不是这样。正则表达式的事实是,它们是大约八个符号的集合,告诉计算机如何匹配模式串。简单来说,他们很容易理解。人们遇到困难的地方是,尝试使用难以置信的复杂的正则表达式,其中解析器实际上会更好。一旦你明白了这八个符号和正则表达式的限制,你就会看到它们根本不可怕。

我打算让你记忆更多东西,使你的的大脑为讨论做好准备。

^

锚定字符串开头。只有字符串刚好位于开头,它才会匹配。

$

锚定字符串末尾。只有字符串到达了末尾,它才会匹配。

.

任何单个字符。接受任何单个字符的输入。

?

正则表达式的之前的部分是可选的,所以A?的意思是可选的字符A

*

之前的部分是零个或多个(任意个)。选取正则表达式的之前的部分,重复接受或者跳过它。A*会接受"AAAAAAA"或者"BQEFT",因为它里面有零个A

+

之前的部分是一个或多个(至少一个)。和*类似,但是只接受一个或多个这种字符。A+会匹配"AAAAAAA",但不是"BQEFT"

[X-Y]

XY字符范围,接受任何范围中列出的字符串。[A-Z]表示所有大写英文字母。许多常见字符范围拥有快捷方式,你可以使用它来代替。

()

捕获这个正则表达式的部分,便于稍后使用。许多正则表达式库将其用于替换、提取或修改文本。捕获会选取正则表达式的()中的部分,并保存它便于以后使用。之后许多库可以让你引用这些捕获。如果你使用([A-Z]+),它会捕获一个或多个大写英文单词。

Python 的re库列出了一些更多的符号,但大多都是这八个的一些修饰符,或者不在正则表达式库中经常发现的额外功能。你将快速记住这八个来起步,重点是粗体的部分(锚定末尾,之前部分可选),以便你可以快速回忆它们并解释他们的作用。

记住这些符号后,请查看以下正则表达式并将其翻译成中文,并使用 Python re库来尝试列出的字符串,或你可以想到的任何其他字符串。

".*BC?$"

helloBChelloBhelloAhelloBCX

"[A-Za-z][0-9]+"

A1232344abc123412345b493034

"^[0-9]?a*b?.$"

0aaaaxaaab99x88aabb9zzzz

"A+B+C+[xyz]*"

AAAABBCCCCCCxyxyzABBBBCCCxxxxABABABxxxx

一旦你翻译了它们,使用Python re模块,尝试在 Shell 中尝试它们,如下:

>>> import re

对于任何不匹配,你会得到AttributeError: 'NoneType',因为当你的正则表达式不匹配时,re.match函数返回None

挑战练习

挑战是尝试使用你的 FSM 模块来实现一个简单的正则表达式,至少执行三个操作。这将是一个困难的挑战,但使用 Python re库来帮助你规划和测试此正则表达式的实现。然后,一旦你知道如何实现它,永远不要这样做了。人生苦短,不要做计算机已经擅长的事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值