正则表达式

Posted xiao-xue-di

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

正则表达式

what:一种匹配字符串的规则
where:程序领域:1,登录注册的表单验证 2.爬虫 3.自动化开发
why:可以制定一个规则 1.来确认某一个字符串是否符合规则 2.从大段的字符串中找到符合规则的内容
how:

正则表达式的语法:1.元字符 2.量词 3.特殊用法和现象

1元字符

[...]----匹配字符组(集)中的字符
[^...]---匹配除了字符组中字符的所有字符

d-------匹配数字
w-------匹配字母数字或下划线
s-------匹配任意空白符
D-------匹配非数字
W-------匹配非数字或字母或下划线
S-------匹配非空白符


-------匹配一个换行fu
	-------匹配一个制表符

^--------匹配字符串的开始
$--------匹配字符串的结尾

a|b------匹配a或b
()------匹配括号内的表达式,也表示一个组
.--------匹配除换行符以外的任意字符

-------匹配一个单词的边界

2量词

*--------重复零次或更多次
+--------重复一次或更多次
?-------重复零次或一次
{n}------重复n次
{n,}-----重复n次或更多次
{n,m}----重复n到m次



转义符在正则表达式中,有很多有特殊意义的元字符,比如d和s等,如果要在正则中匹配正常的d而不是数字
就需要对‘进行转义,变为’\‘。
在python中,无论是正则表达式,还是匹配内容,都是以字符串的形式出现的,在字符串中也有特殊的
含义,本身还需要转义。所以如果匹配一次d,字符串中要写出\d,那么正则里面就要写出\\d,这样
就太麻烦了。这个时候我们就需要用到了 rd这个概念,此时的正则就是r\d就可以了。

贪婪匹配
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

3特殊用法和现象

几个常用的非贪婪匹配
*?------重复任意次数,但尽可能少重复
+?------重复1次或跟多次,但尽可能少重复
??-----重复0次或1次,但尽可能少重复
{n,m}?---重复n到m次,但尽可能少重复
{n,}?----重复n次以上,但尽可能少重复

.*?的用法
.是任意字符
*是取0至无限长
?是非贪婪匹配
合在一起就是,取尽量少的任意字符,一般不会这么单独写,大多用在
.*?x  就是取前面任意长度的字符,知道一个x的出现。

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式