为什么要学正则表达式呢?
在我们有时候处理字符串的时候,有些字符串很复杂。但是也有很多规律和规则。
正则表达式就是描述这种规则的方法。从而解决了我们查找符合某些复杂规则的字符串的需求。
首先开始:
正则表达式中的概念:行定位符、元字符、限定符、字符类、排除字符、选择字符、转义字符、分组。
什么是:行定位符
用来描述字符串的边界
^开始
$结束
什么是:元字符
在正则表达式中有特殊意义的字符就叫元字符,比如说^ $
常见的元字符:
. 匹配除换行符以外的任意字符,
\w 匹配字母,数字,下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始和结束
限定符:
? 匹配前面的字符零次或一次 如:colou?r 匹配u的零次或一次 结果:color colour
* 匹配前面字符零次或多次 如:Go*gle 匹配o的零次或多次 结果: Ggle 到Goo.....gle
+ 匹配前面字符的一次或多次 如:Go+gle 匹配o的一次或多次 结果: Gogle 到Goo.....gle
{n} 匹配前面字符的n次 如:Go{2}gle 匹配o的2次 结果: Google
{n,} 匹配前面字符最少的n次 如:Go{2}gle 匹配o的2次 结果: Google 到Goo....gle
{n,m} 匹配前面字符最少的n次最多m次 如:Go{2,4}gle 结果: Google 到Goooogle
字符类:
[] 可以理解匹配的范围 例如[aeiou] 那么表示只可以匹配a e i o u
要想匹配给定字符串中任意一个汉字,可以使用[\u4e00-\u9fa5];
如果要匹配连续多个汉字,可以使用[\u4e00-\u9fa5]+。
\u 表示Unicode
- 表示在 之间
排除字符:
[^] 可以理解匹配的范围 例如[^1-9] 那么表示排除1到9之间的所有数字
[^a-zA-Z] 那么表示排除a到z之间的小写字母和大写字母.也就是所有英文字母
选择字符:
可以理解为或
| a|b 理解匹配a或者b
转义字符:
\ 将特殊字符变为普通的字符 \. 则输入是点 \\d 这输出是d
分组:
() 可以改变正则表达式的作用范围
括号在正则表达式中也算是一个元字符
(thir|four)th 匹配单词thirth或fourth,如果无小括号thir|fourth,那么就变成了匹配单词thir或fourth
正则表达式的应用
匹配一个身份证号
注意:身份证号有15位 或者18位数字 或者17位数字加X
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$
匹配一个网络IP地址:
[1-9]{1-3}\.[1-9]{1-3}\.[1-9]{1-3}\.[1-9]{1-3}
在Python中使用正则表达式语法
在python中使用正则表达式
放在模式字符串中 如'[^a-zA-Z]'
由于模式字符串中可能包括大量的特殊字符和反斜杠,如果需要写为原生字符串,即在模式字符串前加r或R。就不需要\进行转义了。如: r"\d"