前言
记录利用re查找元素的常用方法。操作符
- . :任意单个字符
- *:前一字符扩展0到∞次
- +:前一字符扩展1到∞次
- ?:前一字符扩展0或1次
- {m}:前一字符扩展m次
- {m,n}:前一字符扩展m到n次
- ^:在开头
- $:在结尾
- \d:[0-9]
- \w:[A-Z a-z 0-9]
- [ ] :字符集
- ( ):分组
- |:左右任一个
- [^]:非字符集
实例:
^[a-z A-z]+$ 由字母组成
^[0-9]+$ 由数字组成
^-?\d+$ 整数
[\u4e00-\u9fa] 中文字符
(25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]?\d) 0~255,由大到小分段
查找方法
re.search(pattern,string,flags=0) #返回第一个查找结果(match对象)
re.match(pattern,string,flags=0) #从头匹配,返回第一个查找结果(match对象)
re.findall(pattern,string,flags=0) #以列表类型返回全部结果
re.split(pattern,string,maxsplit,flags=0) #分隔,返回列表
re.finditer(pattern,string,flags=0) #返回迭代的match对象
re.sub(pattern,repl,string,count=0,flags=0) #替换,返回替换后的字符串
#pattern:正则表达式,r"text"
#string:待匹配字符串
#flag:re.I忽略大小写,re.M:把^当作匹配开始,re.S:操作符能匹配所有字符。
#maxsplit:最大分隔数,其余按一个返回
#repl:替换的字符串,count:替换次数
使用方法
一次操作:
rst=re.search(...)
多次操作:
pat=re.compile(pattern,flags)
rst=pat.search(...)
- 贪婪匹配:默认,输出最长查找结果
- 最小匹配:*?、+?、 ??、{m,n}?
match对象
属性:
- match.string:待匹配文本
- match.re:正则表达式
- match.pos:起始位置
- match.endpos:结束位置
方法: - match.group(0):找到的字符串
- match.start():在原字符串起始位置
- match.end():在原字符串结束位置
- match.span():(start,end)
使用
re.findall(r"语言.+",r.text)
>>>['语言程序设计</span></b></p>\r']
re.search(r"lang=..-..",r.text).group(0)
>>>'lang=ZH-CN'
print(re.match(r"lang=..-..",r.text))
>>>None