【一】基本语法
【二】基本流程
- 指定好匹配的模式(pattern)
- 选择相对应的方法(march,serch,…)
- 能得到匹配的结果(group)
- 基本操作示例:
- 工具包 和 测试字符 准备
import re
arr = '自然语言处理很重要 。 12abc789'
- 字符集合
pattern = re.compile(r'[abc]')
re.findall(pattern, arr)
pattern = re.compile(r'[a-zA-Z]')
re.findall(pattern, arr)
pattern = re.compile(r'[^a-zA-Z]')
re.findall(pattern, arr)
- 或方法(将两个规则并列起来,以 | 连接,表示只要满足其中之一就可以匹配)
pattern = re.compile(r'[a-zA-Z]|[0-9]')
re.findall(pattern, arr)
- 匹配数字 \d 等价于 [0-9]
pattern = re.compile(r'\d')
re.findall(pattern, arr)
- 匹配非数字 \D
pattern = re.compile(r'\D')
re.findall(pattern, arr)
- 匹配字母和数字 \w
pattern = re.compile(r'\w')
re.findall(pattern, arr)
- 匹配非字母和数字 \W
pattern = re.compile(r'\W')
re.findall(pattern, arr)
- 匹配间隔符 \s
pattern = re.compile(r'\s')
re.findall(pattern, arr)
- * 0或多次匹配
pattern = re.compile(r'\d*')
re.findall(pattern, arr)
- + 1或多次匹配
pattern = re.compile(r'\d+')
re.findall(pattern, arr)
- ? 0或1次匹配
pattern = re.compile(r'\d?')
re.findall(pattern, arr)
- 精确匹配 m 次 {m}
pattern = re.compile(r'\d{3}')
re.findall(pattern, arr)
- 匹配最少 m 次,最多 n 次 {m,n}
pattern = re.compile(r'\d{1,3}')
re.findall(pattern, arr)
- match 与 search(match 从字符串的开头开始匹配,如果开头位置没有匹配成功,就算失败了;而 search 会跳过开头,继续向后寻找是否有匹配的字符串)
- 工具包 和 测试字符 准备
import re
arr2 = '123自然语言处理'
- search
pattern = re.compile(r'\d')
match = re.search(pattern, arr2)
match.group()
- sub 与 subn
- sub ( rule , replace , target [,count] )
- subn(rule , replace , target [,count] )
- sub
pattern = re.compile(r'\d')
re.sub(pattern,'数字', arr2)
- subn(会输出替换了几次)
pattern = re.compile(r'\d')
re.subn(pattern,'', arr2)
- split
- split( rule , target [,maxsplit] )
arr3= '自然语言处理123机器学习456深度学习'
pattern = re.compile(r'\d+')
re.split(pattern, arr3)
- ?P<…> 命名组
- <…> 里面是你给这个组起的名字
pattern = re.compile(r'(?P<dota>\d+)(?P<lol>\D+)')
m = re.search(pattern, arr3)
m.group('lol')