基本字符匹配
- \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) # 去掉日期中的時間