美文网首页
【一定要掌握的技能】正则表达式教程

【一定要掌握的技能】正则表达式教程

作者: 糖醋沼跃鱼 | 来源:发表于2020-12-16 19:34 被阅读0次

正则表达式

序言

有些人面临一个问题时会想:“我知道,可以使用正则表达式来解决这个问题。”于是现在他们就有两个问题了 ——Jamie Zawinski

通配符

别被这个名字吓到了,因为我一开始看它的时候就被吓到了。通配符其实就是一个“.”,它可以匹配任何字符,并且只能匹配一个。比如“.ython”只能匹配到“python”、“qython”、或者别的“+ython”。但是不能匹配到“qpython”因为通配符只能匹配到一个字符。

令人头痛的转义

如果我想匹配python.org怎么办,在“python.org”里面有一个点“.”,这在正则表达式中是通配符啊。他有可能会匹配成“pythonaorg”对吧。所以我们需要转义,ok,现在要打起精神,我们需要在它的前面加上反斜线了“python\\.org”

python\\.org

ok,本来我们只要转义“.”不就好了么,"."转义是“\.”,那为什么上面要两个斜线呢?这里面涉及到两层转义,一个是解释器的转义,另一个是re模块的转义。为了让我看的更加明白我要把这里我用markdown编辑的内容截个图就明白了,其实为了让文章显示我想要的符号,我已经使用了一次转义了。这里请细细体会

[图片上传失败...(image-9b7137-1608204850092)]

上面的图文请对比转义的地方看,会有所启发

如果真的很讨厌这样写的话,可以使用原始字符串r'python\.org'

选择符和子模式

我想要的那么多,不可能只匹配个python吧,如果我想要“python”和“perl”呢?使用选择符“python|perl”,但是他们都有一个相同的部分“p”’,那就使用子模式,括号括起来的部分就是子模式了,“p(ython|erl)”。

可选项和重复子模式

在子模式后面加上问号,他就变成了可选项。他可能出现在匹配字符串中,但并非必须的。例如

r'(http://)?(www\.)?python\\.org'

使用了什么呢,首先是使用了原始字符串,过滤了一次转义,然后是两个可选项对吧

它只能匹配到这几种字符串

'http://www.python.org'
'www.python.org'
'http://python.org'
'python.org'

可选项表示模式可以出现一次或者根本不出现。下面这些运算符允许子模式重复多次。

(pattern)*:允许模式重复0次或多次

(pattern)+:允许模式重复1次或多次

(pattern){m,n}:允许模式重复m到n次

字符串的开始和结尾

'^'表示以什么开始

'$'表示以什么结尾

常用的方法

compile()

re.compole将正则表达式(以字符串书写的)转换为模式对象,你也许不知道模式对象是什么,现记住它叫pattern

search()

函数search会在给定字符串中寻找第一个匹配给定正则表达式的自字符串。

re.search(pat, string)

里面的pat是用字符串表示的正则表达式。
上式等价于

pat.search(string)

这里的pat,就是一个由compile()转换的一个模式对象了。明白了吧

相关文章

网友评论

      本文标题:【一定要掌握的技能】正则表达式教程

      本文链接:https://www.haomeiwen.com/subject/kuttnktx.html