p = r'正则表达式'
[]中用^取反
\s 匹配到的空格都有[\t\n\f\v\r]
groups()以元组的形式返回符合所有组中匹配的字符串,一个组为一个字符串
group(n) 第n个分组中匹配到的内容str,组编号是从 1 开始的start() 返回匹配的起始位置
end() 返回匹配的结束位置span(group=0) 返回匹配的索引位置元组
span(group=n) 返回匹配第n个组的索引位置出现(){m}一个分组匹配多次的这种情况,span()会将这个组的最后一次匹配索引位置输出 import re p1 = r'(123){2}(da)' m = re.search(p1,'55123123dasdasda123123asd') print(m) print(m.group()) print(m.groups()) print(m.group(1)) // 输出 <_sre.SRE_Match object; span=(2, 10), match='123123da'> 123123da ('123', 'da') 123 【注】(123){2}只分了一个组,{2}只是指匹配两次(?P<分组名>正则表达式)
p = r‘<([\w]+)>.*</\1>’
\1指引用分组([\w]+)匹配到的内容,进行匹配
import re regex = re.compile(r'\d+') str1 = '55123123dasdasda123123' regex2 = re.compile(r'((\w)\w*?\2)') allstr2 = regex2.findall(str1) print(allstr2) # [('55', '5'), ('1231', '1'), ('23dasdasda12', '2'), ('3123', '3')]介绍:只是将小括号作为一个整体进行匹配,要捕获整个正则表达式
使用:(?:正则表达式)
re.compile(pattern[,flags=0])
re.flag名 简写和全称都可以
标识含义re.S ---- re.DOTALL使得.匹配包括换行符在内的所有字符(’.'不包含换行符)re.I ---- re.IGNORECASE使得匹配对大小写不敏感re.M ---- re.MUTILINE多行匹配。(影响^和$)re.X ---- re.VERBOSE能够让正则表达式组织(表现)的清晰易懂。为了增加可读性,忽略空格和 # 后面的注释re.A — re.ASCII采用ASCII编码re.U — re.UNICODE采用UNICODE编码实例:
regex = re.compile(r'\d+') str1 = '55123123dasdasda123123' allstr = regex.findall(str1,2,len(str1)) print(allstr) ['123123', '123123']