文章目錄
基本概念
正則表達式:字符串的處理方式,是通用的字符串方法。
字符組:同一位置上可能出現的各種字符,方括號之間列出所有可能出現的字符,例如:[0-9a-zA-Z]、[#.?],注意是一位和一個數。其中字符出現順序和出現次數對字符組沒有影響。
字符組的範圍表示法:[ASCII碼小的-碼大的]
元字符:具有特殊意義的字母,比如-表示範圍。若想表達其本身含義,需用轉義字符\轉義。
排除型字符組:,在字符組方括號開始後加上^,寫成[^0-8],表示當前位置上,匹配一個括號內沒有列出的字符,即匹配不是0-8的數字(9)。此外^可以用於正則表達式的開始處,表示起始位置;$可以用於正則表達式的結束處,表示結束位置。^[^0-9][0-9]$表示匹配以非數字開頭,數字結尾的兩位字符。
常用:
. :任意字符
字符組[0-9]表示數字,[a-z]表示小寫字母,[A-Z]表示大寫字母
\d:表示數字 [0-9]
\w:表示單詞 [-0-9a-zA-Z],單詞字符包括數字、字母、下劃線;
\s:表示空白字符 [ \t\n\v\r\f](第一個字符爲空格),空白字符是一些特殊轉義字符,如\t製表符,\n換行符,\r回車符等等。
\D:表示非數字字符,
\W:表示非單詞字符,
\S:表示非空白字符。是對普通字符組簡記的互補,利用其互補特性,可以實現全集效果,如[\d\D]、[\w\W]、[\s\S]均可表示匹配任意字符。
量詞:
*:重複任意次(0次或多次)
+:重複1次或多次
?:重複0次或1次
{n}:重複n次
{n,}:重複n次或更多次
{n,m}:重複n到m次
貪婪匹配:在滿足匹配時,匹配儘可能長的字符串,默認情況下,採用貪婪匹配。.,*,+適用
後面加上?爲將貪婪匹配模式轉爲非貪婪匹配模式,會匹配儘量短的字符串
參考此博文:https://www.cnblogs.com/shenjianping/p/11647473.html
Python之re模塊
1.regex = re.compile(pattern)
將pattern編譯成可複用的正則表達式對象,一次編譯多次使用,有利於節約CPU週期,將相同的pattern應用到多個字符串上時。
2.regex.split(text) :
將text按pattern分隔
text = "foo bar\t baz \tqux"
regex = re.compile('\s+') # 該pattern匹配所有空白字符
regex.split(text) # 將text按pattern分隔,['foo', 'bar', 'baz', 'qux']
3.newtext = regex.sub(‘new’,text)
將text中的所有匹配項替換爲‘new’
regex.sub(':',text) # 將text中的所有匹配項替換爲‘:’,foo:bar:baz:qux
regex.subn() : 替換第n個出現的匹配串
使用\1,\2,…來引用替換字符串中的匹配組元素
4.regex.findall(text) :查看text中所有能夠匹配到的模式
regex.search(text) :返回text中第一個匹配項
regex.match(text) :只在pattern出現在text起始位置時才匹配,沒有匹配到返回None
regex.findall(text) # 查看text中所有能夠匹配到的模式:[' ', '\t ', ' \t']
regex.search(text) # 返回text中第一個匹配項:match=' '
regex.match(text) # 只在pattern出現在text起始位置時才匹配,沒有匹配到返回None