@chenwei123
2018-02-07T09:50:41.000000Z
字数 1166
阅读 456
Python
| 符号 | 代表含义 |
|---|---|
| \d | 一个数字 |
| \w | 一个字母或数字 |
| . | 任意字符 |
| 'py.' | 可以匹配'pyc', 'pyo', 'py!' |
| * | 任意个字符(含0) |
| + | 至少一个字符 |
| ? | 0/1个字符 |
| {n} | n个字符 |
| {n,m} | n-m个字符 |
| \s | 一个空格(tab等空白符) |
| [0-9a-zA-Z_] | 可以匹配一个数字、字母或者下划线 |
| [0-9a-zA-Z_]+ | 可以匹配至少由一个数字、字母或者下划线组成的字符串 |
[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串A|B可以匹配A或B(P|p)ython可以匹配'Python'或者'python'^表示行的开头$表示行的结尾
import rere.match(r"^\d{3}\-\d{3,8}$", "010-12345") #match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None#<_sre.SRE_Match object; span=(0, 9), match='010-12345'>re.match(r'^\d{3}\-\d{3,8}$', '010 12345')#>>>
re.split(r"\s+", "a b c") #['a', 'b', 'c']re.split(r"[\s\,]+", "a,b, c d") #['a', 'b', 'c', 'd']re.split(r"[\s\,\;]+", "a,b;; c d") #['a', 'b', 'c', 'd']
用()表示的就是要提取的分组 Group
import rem = re.match(r"^(\d{3})-(\d{3,8})$", "010-12345")#<_sre.SRE_Match object; span=(0, 9), match='010-12345'>m.group(0) #'010-12345', 原始字符串m.group(1) #'010'm.group(2) #'12345'm.groups() #('010', '12345')
如果正则表达式中定义了组,就可以在Match对象上用
group()方法提取出子串来。
import re#编译re_telephone = re.compile(r"^(\d{3})-(\d{3,8})$")#使用re_telephone.match("010-12345").groups() #('010', '12345')re_telephone.match("010-8086").groups() #('010', '8086')
如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配