正則表達式

基本概念

正則表達式:字符串的處理方式,是通用的字符串方法。
字符組:同一位置上可能出現的各種字符,方括號之間列出所有可能出現的字符,例如:[0-9a-zA-Z]、[#.?],注意是一位和一個數。其中字符出現順序和出現次數對字符組沒有影響。
字符組的範圍表示法:[ASCII碼小的-碼大的]
在這裏插入圖片描述

元字符:具有特殊意義的字母,比如-表示範圍。若想表達其本身含義,需用轉義字符\轉義。
排除型字符組:,在字符組方括號開始後加上^,寫成[^0-8],表示當前位置上,匹配一個括號內沒有列出的字符,即匹配不是0-8的數字(9)。此外^可以用於正則表達式的開始處,表示起始位置;$可以用於正則表達式的結束處,表示結束位置。^[^0-9][0-9]$表示匹配以非數字開頭,數字結尾的兩位字符。

常用
. :任意字符
字符組[0-9]表示數字,[a-z]表示小寫字母,[A-Z]表示大寫字母
\d:表示數字     \iff[0-9]
\w:表示單詞     \iff[-0-9a-zA-Z],單詞字符包括數字、字母、下劃線;
\s:表示空白字符     \iff [ \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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章