正则表达式

正则表达式

1.检测每一段字符串是否符合规则

2从一大段文字中匹配符合规则的字符串

 

主要应用
        Python     爬虫

注意:只和字符串相关

元字符

   描述的是一个位置上的内容规则

  列  

# [012345]
# [0-5]
# [0-9]
# [9-0] 不能从大到小来规定范围

字符组内的所有范围根据ASCII码来的,一个中括号表示一个字符
数字
[0-9]
字母
小写[a-z]
大写[A-Z]
大小写[a-zA-Z]
数字和大小写[A-Z0-9a-z]
大小写字母加下划线[A-Za-z_]

括号内没有符号,根据ascii码从小到大
在字符组中-是有特殊意义的,如果我们想取消这个横杆的特殊意义要加\作为转义符

特殊规则的元字符

[0-9]    \d  匹配任意一个数字   digit

[A-Z0-9a-z]     \w    变量(标识符)

\n   匹配回车换行

\t   匹配制表符table

空格本身匹配  空格

\s 匹配所有的空白

\b  匹配一个单词的边界

反义词(大写)

\W  除了数字字母下划线之外的所有

\D  除了数字之外的所有

\S  除了空白之外的所有

.     匹配换行符之外的所有

[^123]   除123之外的所有

匹配所有 :[\D\d]   [\W\w]   [\S\s]     括号内为大小写

开始符和结束符

^     永远在一个规则的最开始

&      永远在一个规则的最末尾

^和&     规定了这个字符串的长度,并且在这个长度内的内容

|  或的概念

123|456     取123 或则456

()   表示分组

www\.(baidu|oldboy)\.com   表示取www.baidu.com或则www.oldboy.com

量词       

在量词范围内尽可能多的匹配

{n}  表示出现n次

{n,}  表示至少出现n次

{n,m}  表示出现n-m次

?  表示匹配0次或则1次

+  表示匹配1次或多次

*   表示匹配0次或多次

注意   量词表示匹配的次数     元字符表示匹配一个字符的内容

列:

# 匹配整数
# [1-9]\d*|0

# 匹配小数
# \d+\.\d+

# 匹配一个整数或者小数
# \d+\.\d+|([1-9]\d*|0)
# \d+\.?\d*
# \d+(\.\d+)?
# 正则表达式 匹配身份证号码
# 15位
# 首位不能为0
# ^[1-9]\d{14}$

# 18位
# 首位不能为0,末尾可能是x和数字
# ^[1-9]\d{16}[\dx]$

# 合起来
# ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
# [1-9]\d{14}(\d{2}[\dx])?

转义符

# 在测试的网页上写的是什么
# 就直接复制过来
# 然后在字符串外面加上一个r
# r'\\n' --> r'\n'
# t 't'
# \t \本身具有转义作用,相当于改变了t本来的面目
# \\ \本身具有转义作用,\\相当于转义了\的特殊作用,相当于普通的一个'\'

惰性特点:

需要我们手动设置的 尽可能少匹配

贪婪特性:

默认的 尽可能多匹配
在量词范围内尽可能多的匹配 - 贪婪匹配

# a.* 以a开头的任意一个字符串都可以被匹配出来
# a.*? 非贪婪
# a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止





posted @ 2019-03-21 15:41  哈哈骄傲  阅读(218)  评论(0)    收藏  举报