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

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

正则表达式

序言

有些人面临一个问题时会想:“我知道,可以使用正则表达式来解决这个问题。”于是现在他们就有两个问题了        ——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()转换的一个模式对象了。明白了吧



相关文章
|
6月前
|
Ruby
|
应用服务中间件 nginx
Nginx系列教程(07) - Location正则表达式
Nginx系列教程(07) - Location正则表达式
154 0
|
4月前
|
关系型数据库 MySQL
MySQL 保姆级教程(七):用正则表达式进行搜索
MySQL 保姆级教程(七):用正则表达式进行搜索
|
4月前
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用
|
5月前
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用
|
6月前
|
Perl
Perl 教程 之 Perl 正则表达式 7
Perl教程讲解了其强大的正则表达式功能,用于字符串匹配、查找、替换和提取。示例展示如何使用`/s`删除变量`$string`中的重复字符,输出结果为原字符串。其他实例包括将非数字字符替换为空格,删除tab和空格,以及将数字间字符替换为单个空格。
47 3
|
6月前
|
Perl
Perl 教程 之 Perl 正则表达式 6
**Perl正则表达式强大多能,常用于字符串匹配、替换和提取。转化操作符如`tr`用于字符转换,如将所有小写字母转大写:`$string =~ tr/a-z/A-Z/`。**
48 2
|
6月前
|
Perl
Perl 教程 之 Perl 正则表达式 4
简洁概括:Perl正则表达式强大,s///操作符用于字符串替换,例子展示替换"google"为"baidu"。
39 1
|
6月前
|
Perl
Perl 教程 之 Perl 正则表达式 1
Perl教程介绍了其强大的正则表达式功能,用于字符串匹配、替换和转化。匹配用m//(可简写为//),替换用s///,转化用tr///,常与=~或!~配合判断匹配与否。示例展示了m//在匹配字符串中的应用。
34 0