python中re模块_python之re模块
python 中使用正則表達(dá)式需要引入re模塊,用來匹配處理字符串
如:
import re #第一步,要引入re模塊
a = re.findall("匹配規(guī)則", "要匹配的字符串") #第二步,調(diào)用模塊函數(shù)
以列表形式返回匹配到的字符串
1、普通字符和11個元字符:
普通字符匹配自身abcabc.匹配任意除換行符"\n"外的字符(在DOTALL模式中也能匹配換行符a.cabc
\轉(zhuǎn)義字符,使后一個字符改變原來的意思a\.c;a\\ca.c;a\c
*匹配前一個字符0或多次abc*ab;abccc
+匹配前一個字符1次或無限次abc+abc;abccc
?匹配一個字符0次或1次abc?ab;abc
^匹配字符串開頭。在多行模式中匹配每一行的開頭^abcabc
$匹配字符串末尾,在多行模式中匹配每一行的末尾abc$abc
|或。匹配|左右表達(dá)式任意一個,從左到右匹配,如果|沒有包括在()中,則它的范圍是整個正則表達(dá)式abc|defabc
def
{}{m}匹配前一個字符m次,{m,n}匹配前一個字符m至n次,若省略n,則匹配m至無限次ab{1,2}cabc
abbc
[]字符集。對應(yīng)的位置可以是字符集中任意字符。字符集中的字符可以逐個列出,也可以給出范圍,如[abc]或[a-c]。[^abc]表示取反,即非abc。所有特殊字符在字符集中都失去其原有的特殊含義。用\反斜杠轉(zhuǎn)義恢復(fù)特殊字符的特殊含義。a[bcd]eabe
ace
ade
()被括起來的表達(dá)式將作為分組,從表達(dá)式左邊開始沒遇到一個分組的左括號“(”,編號+1.分組表達(dá)式作為一個整體,可以后接數(shù)量詞。表達(dá)式中的|僅在該組中有效。(abc){2}a(123|456)cabcabc
a456c
2、預(yù)定義字符集(可以寫在字符集[...]中)
\d數(shù)字:[0-9]a\bca1c\D非數(shù)字:[^\d]a\Dcabc
\s匹配任何空白字符:[<空格>\t\r\n\f\v]a\sca c
\S非空白字符:[^\s]a\Scabc
\w匹配包括下劃線在內(nèi)的任何字字符:[A-Za-z0-9_]a\wcabc
\W匹配非字母字符,即匹配特殊字符a\Wca c
\A僅匹配字符串開頭,同^\Aabcabc
\Z僅匹配字符串結(jié)尾,同$abc\Zabc
\b匹配\w和\W之間,即匹配單詞邊界匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。\babc\ba\b!bc空格abc空格a!bc
\B[^\b]a\Bbcabc
模塊函數(shù):
1、compile()
編譯正則表達(dá)式字符串,返回一個對象。該對象可以直接以? .? 的方式訪問模塊函數(shù)
格式:
re.compile(pattern,flags=0)
pattern: 編譯時用的表達(dá)式字符串。
flags 編譯標(biāo)志位,用于修改正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等。
2、match()
從字符串頭部開始匹配。//注:這個方法并不是完全匹配。當(dāng)pattern結(jié)束時若string還有剩余字符,仍然視為成功。想要完全匹配,可以在表達(dá)式末尾加上邊界匹配符'$'
格式:
re.match(pattern, string, flags=0)
3、search()
格式:
re.search(pattern, string, flags=0)
re.search函數(shù)會在字符串內(nèi)查找模式匹配,只要找到第一個匹配然后返回,如果字符串沒有匹配,則返回None。
4、findall()
re.findall遍歷匹配,獲取字符串中所有匹配的子串,返回一個列表。
格式:
re.findall(pattern, string, flags=0)
總結(jié)
以上是生活随笔為你收集整理的python中re模块_python之re模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java逻辑量_java – 增量逻辑
- 下一篇: websocket python爬虫_p