贪心和非贪心匹配
# 存在二义性时,贪心匹配默认匹配最长的字符串
greedyHaRegex = re.compile(r'(Ha){3,5}')
mo1 = greedyHaRegex.search('HaHaHaHaHa')
mo1.group()
>>> 'HaHaHaHaHa'
# 非贪心匹配默认匹配最短的字符串
nongreedyHaRegex = re.compile(r'(Ha){3,5}?')
mo2 = nongreedyHaRegex.search('HaHaHaHaHa')
mo2.group()
>>> 'HaHaHa'
findall()
方法
Regex
的search()
方法返回字符串第一次匹配的文本;
Regex
对象的findall()
方法返回被查找字符串的所有匹配;
如果正则表达式中有分组,那么findall()
方法将返回元组的列表
python 中元组:tuple = ( ‘runoob’, 786 , 2.23, ‘john’, 70.2 )
列表:list = [ ‘runoob’, 786 , 2.23, ‘john’, 70.2 ]
字典:dict = {} dict[‘one’] = “This is one” dict[2] = “This is two”
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')
phoneNumRegex.findall('Cell:415-555-9999 Work:212-555-0000')
[('415', '555', '9999'), ('212', '555', '0000')]
字符分类
缩写字符分类 | 表示 |
---|---|
\w | 任何字母、数字或下划线(可以认为是匹配“单词”字符) |
\w | 除字母、数字和下划线以外的任何字符 |
\s | 空格、制表符或换行符(可以认为是“空白”字符) |
\S | 除空格、制表符和换行符以外的任何字符 |
建立自己的字符分类
- 字符分类
[aeiouAEIOU]
表示匹配所有的元音字符,不区分大小写; [^aeiouAEIOU]
表示匹配所有的非元音;- 方括号内,普通正则表达式符号不会被解意;
插入符号和美元符号
^
插入字符表示匹配必须发生在被查找文本的开头;
'KaTeX parse error: Undefined control sequence: \d at position 27: …发生在被查找文本的结尾; `^\̲d̲+`表示从开头到结尾都是数字的字符串;
Reference:
Python编程快速上手