Python 正则表达式
## 基本字符匹配
- \s 空白符
- \w 字母或下划线
- \d 任意数字
- ^ 匹配一行字符串开头
- $ 匹配一行字符串的结尾
- * 匹配0个或多个表达式
- + 匹配一个或多个表达式
- . 匹配任意字符(除换行符)
- ? 非贪婪匹配方式
- a|b 匹配a或b
- () 子表达式
- {} 匹配个数
## re模块
### mathch
从头开始匹配,开头匹配不成功则匹配失败,适合用来检测字符串是否符合正则表达式的规则
result = re.match("^Hello\s\w{10}\s\d\d\d", "Hello zayn_malik 123")
print(result.group()) # 输出匹配结果
print(result.span()) # 输出匹配范围
result = re.match("^Hello\s(\d+)\s\w{10}", "Hello 123 zayn_malik 123")
print(result.group(1)) # 输出括号里子表达式的结果
print(result.group())
content = '''Hello 1234 puth
demo'''
# re.S使.匹配包括换行符内的所有字符 re.I使大小写不敏感
result = re.match("^He.*?(\d+).*?demo$", content, re.S)
### search
扫描整个字符串,返回第一个成功匹配的结果
html = ''' <ul>
<li class="active" singer="zayn">Let me</li></ul>
result = re.search('<li.*?singer="(.*?)">(.*?)</li>', content, re.S)
print(result.group(1), group(2)) # zayn Let me
### findall
搜索整个字符串,返回符合正则表达式的所有内容
### sub
修改字符串的内容
content = 'dada13vsnk31231'
result = re.sub("\d+", '', content)
print(content) # 去掉字符串中的数字
### compile
将字符串编译为正则表达式对象
content = "2018-10-31 11:29"
pattern = re.compile("\d{2}:\d{2}")
result = re.sub(patter, '', content)
print(result) # 去掉日期中的时间