python學習筆記(四)-----正則表示式
阿新 • • 發佈:2018-12-11
import re
xxRegex=re.compile(xxxxxxxxxx)
result=xxRegex.search(onestring)
print(result.group())
1.用()分組,分組後可用result.group(int)區分
import re s="123-1234dsf234-3456-4567dg111-11111" c=re.compile(r'(\d\d\d)-(\d\d\d\d)') result=c.search(s) print(result.groups()) print(result.group(0)) print(result.group(1)) print(result.group(2)) ''' ('123', '1234') 123-1234 123 1234 '''
2.用管道匹配多個分組
- 字元‘|’稱為管道
- regex=re.compile(r'a|b')
- 此句中可匹配a或b
- regex=re.compile(r'asd(aaa|bbb|ccc)')此句asdaaa,asdbbb,asdccc都可進行匹配
3.符號
- ?匹配零次或一次前面的分組
- *匹配零次或多次前面的分組
- +匹配一次或多次前面的分組
- {n}匹配n次前面的分組
- {n,}匹配n次及以上前面的分組
- {,n}匹配零次至n次前面的分組
- {n,m}匹配n次至m次前面的分組
- {n,m}?或*?或+?對前面的分組進行非貪心匹配
- ^spam意味著字串必須以spam開始
- spam$意味著字串必須以spam結束
- .匹配除換行符外所有字元
- \d,\w和\s分別匹配數字、單詞和空格
- \D,\W和\S分別匹配數字、單詞和空格外的所有字元
- [abc]匹配中括號內的任意字元
- [^abc]匹配不在中括號內的任意字元
- .*可以匹配所有字元
- .*?非貪心匹配所有字元
- re.I/re.IGNORECASE向search的第二引數傳入此值可忽略大小寫進行匹配
4.findall()
search()只返回一個匹配,findall()返回全部匹配於一列表中。
5.sub()
sub中第一個引數為要替換字串,第二引數為原字串。使用後將匹配處替換為第一引數字串。
6.複雜化
向re.compile()中傳入re.VERBOSE可忽略正則表示式中的空格換行符。
regex=re.compile(r'''(
(123)-
(\d\d\d)-
([asdfg]*)
)''',re.VERBOSE)
7.兩個或
regex=re.compile(xxx,re.IGNORECASE|re.DOTALL|re.VERBOSE)