Python爬蟲之正則表達式中的元字符

2021-01-07 一起學python

特殊符號和字符

本節我們將介紹最常見的特殊符號和字符,即所謂的元字符,正是它給予正則表達式強大的功能和靈活性。下面我們將列出一些最常見的符號和字符:

我們這邊只列舉了部分的符號和字符,大家可以自行搜索查看全部的內容。

使用擇一匹配符號匹配多個正則表達式模式

表示擇一匹配的管道符號(|),也就是鍵盤上的豎線,表示一個「從多個模式中選擇其一」的操作。它用於分割不同的正則表達式。例如,在下面的表中,左邊是一些運用擇一匹配的模式,右邊是左邊相應的模式所能夠匹配的字符。

有了這個符號,就能夠增強正則表達式的靈活性,使得正則表達式能夠匹配多個字符串,而不僅僅只是一個字符。擇一匹配有時候也被稱為並(union)或者邏輯或操作(logical OR)。

匹配任意單個字符

點號或者句點(.)符號匹配除了換行符\n以外的任何字符(Python正則表達式有一個編譯標誌[S或者DOTALL],該標記能夠推翻這個限制,使點號能夠匹配換行符)。無論字母、數字、空格(並不包括"\n"換行符)、可列印字符、不可列印字符,還是一個符號,使用點號都可以匹配它們。那麼我們這裡需要思考一個問題,如何匹配句點或者句號字符呢?其實要匹配句點符號本身,我們就必須使用反斜線轉義句點符號的功能,例如:"\."。

從字符串起始或者結尾或者單詞邊界匹配

還有些符號和相關的特殊字符用於在字符串的起始和結尾部分指定用於搜索的模式。如果是要匹配字符串的開始位置,就必須使用脫字符(^)或者特殊字符\A(反斜線和大寫字母A)。後者主要用於那些沒有脫字符的國際鍵盤。同樣美元符號($)或者\Z將用於匹配字符串的末尾位置。

使用這些符號的模式與賁張描述的其他大多數模式是不同的,因為這些模式制定了位置或者方位。

特殊字符\b和\B可以用來匹配字符邊界。而兩者的區別在於\b將用於匹配一個單詞的邊界,這意味著如果一個模式必須位於單詞的起始部分,就不管該單詞前面是否有任何字符(單詞位於行首)。同樣,\B將匹配出現在一個單詞中間的模式(即,不是單詞邊界),下面我們來看一些示例:

創建字符集

儘管句點可以用於匹配任意符號,但某些時候,可能想要匹配某些特定字符。正因如此,發明了方括號。該正則表達式能夠匹配一對方括號中任意字符。下面為一些示例:

關於[cr][23][dp][o2]這個正則表達式有一點需要說明;如果僅允許「r2d2」或"c3po"作為有效字符串,就需要更嚴格限定的正則表達式。因為方括號僅僅表示邏輯或的功能,所以使用方括號並不能實現這一限定要求。唯一的方案就是使用擇一匹配,大家可以思考一下怎麼做。

然而,對於單個字符的正則表達式,使用擇一匹配和字符集是等效的。例如,我們以正則表達式"ab"作為開始,該正則表達式只匹配包含字母"a"且後面跟著字母"b"的字符串,如果我們想要匹配一個字母的字符串,例如,要麼匹配a,要麼匹配b,就可以使用正則表達式[ab],因為此時字母a和b是相互獨立的字符串。我們也可以使用正則表達式a|b。然而,如果我們想要匹配滿足模式"ab"後面且跟著"cd"的字符串,我們就不能使用方括號,因為字符集的方法只適用於單字符的情況。這種清康熙愛,唯一的方法就是使用ab|cd,這就與我們上面的問題是相同的。所以上面問題的答案就是使用正則表達式r2d2|c3po即可。

相關焦點

  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • 妙用正則表達式--Python中的re模塊
    目前正在火熱招生中~詳細培訓大綱及報名方式,請點擊文末閱讀原文呦~另外,2019年11月29日-12月1日,武漢字符串數據科技有限公司將在湖北武漢舉辦《第四期Python編程技術培訓》的招生即將結束,還有少量名額,感興趣的同學可打開爬蟲俱樂部往期推文——《2019年Python第四期培訓招生
  • 原創通俗易懂的Python的正則表達式,建議收藏
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。
  • Python3爬蟲(4)--python正則表達式詳細版
    做數據清洗的時候想查出一些特定的字符,批量替換一些指定的字符怎麼做?...等等,在python中,這些都可以用正則表達式處理函數進行處理。re 模塊使 Python 語言擁有全部的正則表達式功能。使用前導入該模塊:import re1、re.match()函數和re.search()函數,實現字符串的正則匹配match 和 search 只匹配一次,當正則表達式在字符串中匹配到多個結果時,在不指定全部返回的情況下,只返回最先匹配到的第一個結果。
  • Python網絡爬蟲之正則表達式(一)
    1 初識正則表達式正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。正則表達式並不是Python的一部分。
  • Python之re模塊方法詳解(正則表達式)
    學習re模塊首先要對python正則表達式要了解,正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配
  • Python中正則表達式模塊詳解
    用來處理字符串,對字符串進行檢索和替換,另外正則在python爬蟲的應用也是相當廣泛!
  • Python爬蟲提取神器,正則表達式(re模塊),全程乾貨!
    python正則表達式(re模塊)什麼是正則表達式正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a到z之間的字母
  • 5分鐘完全掌握正則表達式
    什麼是正則表達式正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),聽起來確實不是很好理解。我們從這個定義中抽出三個關鍵詞:模式:模式其實就是規則,這就是正則表達式的核心,這裡的規則是人為定義好的,可以是字符,數字和字母。
  • Python 正則表達式
    最簡單的正則表達式就是普通字符串,可以匹配其自身。比如,正則表達式 『hello』 可以匹配字符串 『hello』。要注意的是,正則表達式並不是一個程序,而是用於處理字符串的一種模式,如果你想用它來處理字符串,就必須使用支持正則表達式的工具,比如 Linux 中的 awk, sed, grep,或者程式語言 Perl, Python, Java 等等。
  • Python中的正則表達式
    什麼是正則表達式正則表達式是用於處理字符串的強大工具,它使用預定義的特定模式去匹配一類具有共同特徵的字符串,主要用於快速、準確地完成複雜字符串的查找、替換等。正則表達式進行匹配的流程如下圖所示:正則表達式匹配過程是:依次拿出表達式和文本中的字符比較,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。
  • 萬字長文詳解Python正則表達式及re模塊
    在正則表達式中使用[]將一組字符包裹起來,就到達了自己的需要,例如原音字符[aeiou],特殊字符[*&%@]即可完美的匹配任意一個!如果想要匹配.,?,*這些符號,可以使用轉義字符\,比如\.,其他元字符如下
  • Python網絡爬蟲之正則表達式(二)
    1 re模塊Python通過re模塊提供對正則表達式的支持,使用re的一般步驟是先將正則表達式的字符串形式編譯為Pattern實例,然後使用Pattern實例處理文本並獲得匹配結果(一個Match實例),最後使用Match實例獲得信息,進行其他的操作。
  • Python中的正則表達式之re.Match類
    任意字符, * 出現任意次數b = re.search(r'c.# group 方法表示正則表達式的分組# 1. 在正則表達式裡使用小括號()表示一個分組# 2. 如果沒有分組,默認只有一組# 3..group())# 第0組也就是把整個正則表達式當作一個整體print(c1.group(0))# 第1組print(c1.group(1))# 第2組print(c1.group(2))# 第3組print(c1.group(3))
  • Python正則表達式總結
    正則表達式 的起源、發展、流派、語法、引擎、優化等相關知識,今天我們主要來學習一下 正則表達式在 Python語言 中的應用!正則表達式中^表示匹配行的開頭,默認模式下它只能匹配字符串的開頭;而在多行模式下,它還可以匹配 換行符\n後面的字符。注意:正則語法中^匹配行開頭、\A匹配字符串開頭,單行模式下它兩效果一致,多行模式下\A不能識別\n。5.
  • python正則表達式
    微信公眾號:學點啥玩點啥小白友好型python正則表達式 1#第7章 模式匹配與正則表達式
  • 學習Python正則表達式
    然而,讓李丹煩惱的是,評論是以自由文本的形式展現,電話號碼就在這些評論中。如何不需要一個接一個地複製和粘貼,就可以輕鬆地找到這些電話號碼?Python中的正則表達式(re)就可以解決這個問題!正則表達式正則表達式是一個具有特殊字符的序列。它有助於檢查字符串中的每個字符,看它是否與某個模式匹配:哪些字符在什麼位置出現了多少次。
  • Python正則表達式入門到入魔
    3、20世紀60年代C語言之父、UNIX之父肯·湯普森把這個「正則表達式」的理論成果用於做一些搜索算法的研究,他描述了一種正則表達式的編譯器,於是出現了應該算是最早的正則表達式的編譯器qed(這也就成為後來的grep編輯器)。
  • Python正則表達式由淺入深(一)
    尤其是由於文本數據來源於爬蟲等渠道,數據往往嚴重不規整,這時候文本處理起來就顯得尤為吃力。幸運的是Python提供了re模塊,可以實現正則表達式的操作。re模塊主要通過六大方法來對字符串進行處理,包括:match()、search()、findall()、split()、sub()。
  • Python爬蟲之正則表達式一些常用方法
    正則表達式與Python在了解了正則表達式的相關知識之後,開始查看Python當前如何通過使用re模塊來支持正則表達式,re模塊在很早之前就引入了,用於替換那些已過時的regex模塊和regsub模塊——這兩個模塊在Python2.5版中移除,而且此後導入這兩個模塊中的任意一個都會出發