Python 正则表达式
HDUZN

正则表达式是什么?

正则表达式(regular expression) 描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

比如:

  • col+r:可以匹配 color、colour、colouur 等,+ 号代表前面的字符至少出现一次1次或多次;
  • col*r:可以匹配 colr、color、colour 等,* 号代表前面的字符可以0次或多次;
  • col?r: 可以匹配 colr 或者 color,? 问号代表前面的字符可以出现0次或1次。

基础1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\n 匹配换行符
\t 匹配制表符
\w 匹配字母、数字、下划线
\W 匹配除字母、数字、下划线(与\w相反)
\d 匹配十进制数字,等价于[0-9]
\D 匹配除十进制数字(与\D相反)
\b 匹配空字符串,仅用于单词的首尾。
\B 匹配空字符串,但不能用于单词的首尾。
\s 匹配空白字符
\S 匹配除空白字符(与\s相反)
[aeiou] 原子表,匹配aeiou中的任意一个
[^ab89x] 原子表,匹配除ab89x以外的任意一个字符
[a-z0-9] 使用减号指定字符区间。这里表示一个字符,必须是小写字母或数字
[^A-Za-z] 第一个字符是^,表示反向逻辑。这里匹配除了大小写字符之外的其他任意字符

正则实例1

基础2

1
2
3
4
5
6
7
8
9
10
11
^ 匹配字符串的开头
$ 匹配字符串的结尾
. 匹配任一字符(一个通配符)
? 表示前接字符出现0次或1次
* 表示前接字符出现0次或多次
+ 表示前接字符出现1次或多次
{n} 表示前接字符恰好出现n次
{n,} 表示前接字符至少出现n次
{n,m} 表示前接字符至少出现n次,至多m次
| 表示选择符或
( ) 添加括号,括号内容会丧失匹配功能,但在findall()中可以用于抽取特定部分的字符串,而不是整个字符串。

正则实例2

基础3:贪婪模式与非贪婪模式

贪婪模式:尽可能多的进行匹配(默认是贪婪模式)
非贪婪模式:尽可能少的匹配,精准匹配

1
2
*? 以非贪婪模式,表示前接字符出现0次或多次
+? 以非贪婪模式,表示前接字符的1次或多次

正则实例3

基础4:模式修正符

模式修正符:在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改

1
2
re.s 让 . 也可以匹配多行
re.l 让匹配时忽略大小写

正则实例4

  • 本文标题:Python 正则表达式
  • 本文作者:HDUZN
  • 创建时间:2022-05-06 20:47:49
  • 本文链接:http://hduzn.cn/2022/05/06/Python-正则表达式/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论