【python】初学者

正则表达式

2018-05-23  本文已影响16人  米兰的小铁匠

# 我记得我第一次看到一个正则表达式,瞬间被复杂公式吓到了(后来才知道是匹配邮箱的,笑死~~~)

# 后来经过一系列学习,知道这些东西是固定的一些格式,简直 so easy!!!

# 下面由我来简单介绍一下正则表达式吧


# 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。一般来说,匹配最多的是一些邮箱呀,电话号码啊,身份证号呀等等,比较常见!

常见的元字符

^匹配你要用来查找的字符串的开头,$匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

限定符

# 如果你想匹配多个,那么就可以使用限定符(当然有一种简单的方式就是{},不过这样经常用的话是不是很low呢!)

下面是一些使用重复的例子:

1. Windows\d+匹配Windows后面跟1个或更多数字

2. ^\w+匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置)

分组;(分组在工作中也是经常用的)

我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作(后面会有介绍)。

(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。


# 还有一个常用的,对!就是反义!

反义代码

例子:

\S+匹配不包含空白符的字符串。

<a[^>]+>匹配用尖括号括起来的以a开头的字符串。


还有什么没有说到呢?

贪婪与懒惰;

#这种一般是发生在爬取外网数据的时候发生的!

#当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。

懒惰的例子;

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

懒惰

# 好了,还有很多东西没有提及,说的都是一些普通工作中常用的,现在附上本人编写的一些正则表达式!

匹配手机号码 匹配邮箱 匹配密码 匹配用户名 匹配车牌号 匹配身份证

加油~~~

上一篇 下一篇

猜你喜欢

热点阅读