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)  # 去掉日期中的时间

posted @ 2018-10-31 11:33  authetic  阅读(153)  评论(0编辑  收藏  举报