正则


正则表达式 字符串的规则
来帮助我们
1.检测某一段字符串时候符合规则
2.从一段文字中将符合规则的匹配出来
正则只和字符串相关

规则
元字符
量词

简单字符串的筛选和匹配
在字符串当中,-是有特殊意义的,如果我们想取消这个横杠的特殊意义
需要使用 \ 作为转义符

字符组之外的其它带有特殊给则的元字符:
[0-9] \d 匹配任意一个数字
[A-Z0-9a-z] \w 标识符
\n 匹配回车换行
\t 匹配制表符 table
空格 本身匹配 空格
\s 匹配所有的空白
\b 匹配一个单词的边界
反义词
\W 除了数字字母下划线之外的所有
\D 除了数字之外的所有
\S除了空白之外的所有

. 匹配换行符之外的所有字符

匹配所有: [\D\d] [\W\w] [\S\s]
非字符组:[^123]除了123之外的都匹配

开始符合结束符
^永远在一个规则的最开始
$永远在一个规则的最末尾
^和$ 规定了这个字符串的长度,并且在这个长度内的
内容和规定必须一模一样

| 或的概念
123|456

www.baidu.com
www.oldboy.com

分组的概念
www\.(baidu|oldboy)\.com

总结:
\d \w \s (\n \t) \b
\D \W \S
[] [^]
^ $
| 或 永远把相对长的放在左边
()
.
匹配所有: [\D\d] [\W\w] [\S\s]

元字符取值多少排序:

\t < \n < \d < \w < . < \s

 

量词:
{n} 表示出现n次
{n,} 表示至少出现n次
{n,m} 表示出现n-m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次

贪婪匹配 : 尽可能多(上限)的去匹配

元字符 量词
匹配的是一个字符的内容
量词 表示的是匹配的次数
例如: 15位和18位身份证;18位的以X和数字结尾,都不能以0开头
其实18位的可以写成 [1-9]\d{16}[\dx]或者[1-9]\d{14}\d{2}[\dx]
15位的可以写成[1-9]\d{14}
[1-9]\d{14}(\d{2}[\dx])?

转义
在测试的网页山写的是什么 就直接赋值过来
然后在字符串外面加上 r
r'\\n'-->r'\n'
\t \ 本身具有转义的作用,相当于改变了t本来的面目
\\ \ 本身具有转义的作用,\\相当于转义了\的特殊作用,使它变成了普通的一个\
贪婪匹配 : 默认的 尽可能多的匹配(它只把符合要求的取到上限数,但是不符合要求的一个都不取)
惰性匹配 : 需要我们手动设置,尽可能少的匹配(把符合要求的取到最下限,但是把不符合要求的取到最上限)

贪婪匹配数量 < 惰性匹配的数量

拓展:

\w 既然是 匹配 数字字母下划线的,那么 \w?为什么还能匹配   ?><>"":{} 这些特殊字符呢?

这里的\w?就是利用惰性匹配的不符合要求达到上限值 -->  ?><>"":{}  这里的9个特殊符号都是不符合要求的,就有10个结果,这10个结果都是没匹配上(即匹配0次)

posted @ 2019-03-21 16:37  .如影随行  阅读(138)  评论(0编辑  收藏  举报