正则
正则表达式 字符串的规则
来帮助我们
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次)