#!/usr/bin/env python # coding: utf-8 # # 模块re:正则表达式 # 正则表达式是用来匹配字符串或者子串的一种模式,匹配的字符串可以很具体,也可以很一般化。 # # Python 标准库提供了 re 模块: # In[1]: import re # ## re.match()函数 # # `re.match()`函数对字符串的开头进行匹配,返回第一个匹配对应的Match对象,否则返回None: # In[2]: pat = "\d+" # In[3]: s = "abc123abc123456" # In[4]: re.match(pat, s) # 由于字符串不是字母开头,没有匹配结果。 # ## re.search()函数 # 与`re.match()`函数不同,`re.search()`函数会用正则表达式去匹配字符串中所有的子串,如果找到,返回第一个匹配对应的Match对象,否则返回None: # In[5]: re.search(pat, s) # 可以调用返回的Match对象的.group()方法查看匹配到的字符串: # In[6]: m = re.search(pat, s) # In[7]: m.group(0) # ## re.split()函数 # # `re.split()`使用指定的正则表达式作为分隔符,对字符串进行分割,其用法为: # In[8]: pat = " +" # In[9]: s = "a b c d e" # In[10]: re.split(pat, s) # ## re.sub()函数 # `re.sub()`函数对字符串中正则表达式匹配的部分进行替换: # In[11]: pat = " +" # In[12]: replace = ";" # In[13]: s = "a b c d e" # In[14]: re.sub(pat, replace, s) # ## 正则表达式规则 # # 正则表达式由一些普通字符和一些元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义: # # # 子表达式 | 匹配内容 # -- | -- # . |匹配除了换行符之外的内容 # \w |匹配所有字母和数字字符 # \d |匹配所有数字,相当于 [0-9] # \s |匹配空白,相当于 [\t\n\t\f\v] # \W,\D,\S |匹配对应小写字母形式的补 # [...] |表示可以匹配的集合,支持范围表示如 a-z, 0-9 等 # (...) |表示作为一个整体进行匹配 # ¦ |表示逻辑或 # ^ |表示匹配后面的子表达式的补 # * |表示匹配前面的子表达式 0 次或更多次 # + |表示匹配前面的子表达式 1 次或更多次 # ? |表示匹配前面的子表达式 0 次或 1 次 # {m} |表示匹配前面的子表达式 m 次 # {m,} |表示匹配前面的子表达式至少 m 次 # {m,n} |表示匹配前面的子表达式至少 m 次,至多 n 次 # # 例如: # # - ca*t 匹配: ct, cat, caaaat, ... # - ab\d|ac\d 匹配: ab1, ac9, ... # - ([^a-q]bd) 匹配: rbd, 5bd, ... # In[ ]: