Python:正则表达式

733 查看


Paste_Image.png

前言


最近正在自学python,想从一个实际项目入手,那样的话,应该学的能更积极一些,通过实际功能来锻炼一下自己,想做个爬虫,爬虫因为要处理字符串,正则表达式必不可少,所以先从它入手。

通过在各种渠道找各种资料学习,现在对正则表达式有一些自己的认识了,现结合我的理解分享给大家。

正则表达式简介


正则表达式是一些由字符和特殊符号组成的字符串,它是用来处理字符串的强大工具,可以支持多种编程语言,所以相比各种编程语言,正则表达式是独立的,非常有用,值得我们学习。

说到底,正则表达式可以按照某种模式匹配一个具有相似特征的字符串的集合。

正则表达式字符语法


符号 说明 举例
. 可匹配任何字符(换行符除外) a.b 代表ab之间有一个字符 a2b, a5b, alb, a*b
^ 匹配字符串的开始 ^from 代表 任何以from开始的字符串
$ 匹配字符串的结尾 bi/li$ 代表 任何以bi/li结尾的字符串
* 匹配前面出现的正则表达式零次或者多次
+ 匹配前面出现的正则表达式一次或者多次 \d+ 表示一个至少一位数的数字
匹配前面出现的正则表达式零次或者一次 ab?表示a或者ab
{N} 匹配前面出现的正则表达式N次 \d{3}表示连续三个数字,比如123,596
{M,N} 匹配重复出现M次到N次的正则表达式
[...] 匹配字符组里出现的任意一个字符 [23]是2或3,[cr][23]表示c2或者c3或者r2或者r3
[x-y] 匹配从字符x到y中的任意一个字符 [a-z]表示a至z之间某个字符
[^xy] 不匹配此字符集中出现的任意一个字符 [^abc]表示除a,b,c之外的字符
\d 匹配(0~9)任何数字 任意一个数字,0到9
\w 匹配任何数字字母字符 任意字母数字字符:*,/,-,a,8
\s 匹配任何空白符
\b 匹配单词的边界 \bthe表示任何以"the"开始的字符串,\bthe\b表示 “the”
\c 逐一匹配特殊字符
\A (\Z) 匹配字符串的起始(结束) 与^和$相似,当初为了防止国际键盘没有这两个字符而规定的

更多实例


0?[1-9]
表示01到09或者1到9

[0-9]{15,16}
表示15 或 16 位数字表示,例如:信用卡号码

\d{3}-\d{3}-\d(4)
表示 例如 800-555-1212

\w+@\w+\.com
表示的是电子邮件的地址格式,'.'前面的'\'代表反转义字符 例如 hunter@Gmail.com

\d+(\.\d*)?
表示简单的浮点数,即, 任意个十进制数字,后面跟一个可选的小数点,然后再接零或多个十进制数字。例如:“0.004,”“2”,“75.”, 等等

(Mr?s?. )?[A-Z][a-z]* [ A-Za-z-]+
表示名字和姓氏,对名字的限制(首字母大写,其它字 母(如果存在)小写), 全名前有可选的称谓(“Mr.,” “Mrs.,” “Ms.,” 或 “M.,”),姓氏没有什么 限制,允许有多个单词、横线、大写字母。

后记


这篇文章还会不停更新关于正则表达式的知识!
这是我第一次使用markdown编辑器写博客,跟大家分享一下markdown的使用教程(大神请勿鄙视)。

younghz的Markdown库
简书献给写作者的 Markdown 新手指南