首頁>Club>
5
回覆列表
  • 1 # DIY電子愛好者

    你的意思是正則表示式吧,python perl等語言的正則表示式都差不多。

    關於正則表示式的知識可以參考專門的書籍。如O’Reilly出版的《精通正則表示式》。

  • 2 # 一同匠善

    正則表示式是一個強大的字串處理工具方法,關於字串的操作絕大部分都可以使用正則表示式來解決,爬蟲工作者更為重要,每天和字串打交道,正則表示式更是不可或缺的技能,正則表示式的在不同的語言中使用方式可能不一樣,不過只要學會了任意一門語言的正則表示式用法,其他語言中大部分也只是換了個函式的名稱而已,本質都是一樣的。

    分享一下我學習正則表示式的參考資料連結: https://www.runoob.com/python/python-reg-expressions.html

    下面,我來介紹一下python中的正則表示式是怎麼應用的

    一.python中的正則表示式大致分為:

    1.1. 元字元

    1.2. 模式

    1.3. 函式

    1.4. re 內建物件用法

    1.5. 分組用法

    1.6. 環視用法

    二.所有關於正則表示式的操作都使用 python 標準庫中的 re 模組

    小例子:

    import re

    s1 = "hello World!"

    regex = re.compile(s1, re.I)

    print regex.match(s).group()

    三.函式

    簡單分享一下三個函式match search compile,可以見下面圖

    四.分享一個找到的筆記例項

    正則表示式例項:

    #!/usr/bin/python

    import re

    line = "Cats are smarter than dogs"

    matchObj = re.match( r"(.*) are (.*?) .*", line, re.M|re.I)

    if matchObj:

    print "matchObj.group() : ", matchObj.group()

    print "matchObj.group(1) : ", matchObj.group(1)

    print "matchObj.group(2) : ", matchObj.group(2)

    else:

    print "No match!!"

    正則表示式:

    r"(.*) are (.*?) .*"

    解析:

    首先,這是一個字串,前面的一個 r 表示字串為非轉義的原始字串,讓編譯器忽略反斜槓,也就是忽略跳脫字元。但是這個字串裡沒有反斜槓,所以這個 r 可有可無。

    (.*) 第一個匹配分組,.* 代表匹配除換行符之外的所有字元。

    (.*?) 第二個匹配分組,.*? 後面多個問號,代表非貪婪模式,也就是說只匹配符合條件的最少字元

    後面的一個 .* 沒有括號包圍,所以不是分組,匹配效果和第一個一樣,但是不計入匹配結果中。

    matchObj.group() 等同於 matchObj.group(0),表示匹配到的完整文字字元

    matchObj.group(1) 得到第一組匹配結果,也就是(.*)匹配到的

    matchObj.group(2) 得到第二組匹配結果,也就是(.*?)匹配到的

    因為只有匹配結果中只有兩組,所以如果填 3 時會報錯。

    五.可以先把文件過一遍,用到的時候多練習,熟能生巧。

  • 3 # web前端小芬

    Python是一種計算機程式設計語言。中文名:蟒蛇,釋出於1991年,是一種動態的、面向物件的指令碼語言,最初被設計用於編寫自動化指令碼(shell),隨著版本的不斷更新和語言新功能的新增,越來越多被用於獨立的、大型專案的開發。

  • 4 # Python大星

    Python 大星掏出了秘密武器 --《正則心法》

    學會這門獨門武器,在 “爬者” 境界下將如探囊取物

    “宮廷玉液酒,一百八一杯,這酒怎麼樣,看我給你吹”。

    先看下正則測試小工具,一般人我不告訴他

    http://tool.oschina.net/regex/

    小試牛刀:

    是不是很神奇...

    來來來,Python 大星傳授你一套《正則心法》

    圖 1

    圖 2

    考驗你悟性的時候

    從《正則心法》中我們可以看到:

    “斜槓 + 小寫字母” 和 “斜槓 + 大寫字母” 語義相反

    含大寫字母的一般是否定語句

    這些字母不需要死記硬背,背後都有其自然規律

    作為 " 爬蟲英語四級” 的老玩家,小 case

    w---world

    s---space

    d---digital

    接下來

    我會依次展示《正則心法》的奧秘之處

    好的 “心法” 必須襯好的 “武器”

    re 庫 瞭解哈

    “正則心法” 第一式 --match

    當我們用《正則心法》第一式獲取到匹配資料,

    你以為就 over 了嗎?

    刁鑽需求的任務:提取匹配資料中的數字

    ^ :匹配一行字串的開頭

    \s :匹配空格

    \d+: 匹配 1 個或多個數字

    在正則表示式中使用英文括號 ()

    group() 和 group(0) 會提取完整的匹配結果

    group (1) 會匹配第一個括號中的子字串

    假如正則表示式後面還有 () 包括的內容,那麼可以依次用 group (2)、group (3) 等來獲取

    “正則心法” 第二式 -- 通用匹配

    Python 大星縱覽群書,發現個重大密碼

    萬用字元無一例外的使用 .*

    “正則心法” 第三式 -- 貪婪與非貪婪

    ● 什麼是貪婪匹配?

    在貪婪匹配下,. 會匹配儘可能多的字元

    括號中是 \d+,

    也就是至少一個數字,並沒有指定具體多少個數字,

    因此,.* 就儘可能匹配多的字元,這裡就把 123456 匹配了,

    給 \d + 留下一個可滿足條件的數字 7,最後得到的內容就只有數字 7 了。

    ● 什麼又是非貪婪匹配?

    非貪婪匹配就是儘可能匹配少的字元

    非貪婪匹配的寫法是 .*?

    貪婪匹配就是匹配儘可能多的字元

    非貪婪匹配就是匹配儘可能少的字元

    “正則心法” 第四式 -- 修飾符

    當 content 中含有換行符或者大小寫時

    需要紅藍 buff 加持 --“修飾符”

    跟隨 Python 先打紅 buff-- re.S(匹配包括換行在內的所有字元)

    1234567

    再打藍 buff -- re.I(使匹配對大小寫不敏感,注意:I 是 i 的大寫)

    1234567

    “正則心法” 第五式 -- 轉義匹配

    說到 “跳脫字元”,萬金油 “斜槓” 來表示

    “正則心法” 第六式 --search

    前面五式,我們使用的 match 方法是從字串的開頭開始匹配的,

    一旦開頭不匹配,那麼整個匹配就失敗了

    Python 大星傳授你新的一招 --search

    在匹配時,search 方法會依次掃描字串,直到找到第一個符合規則的字串,然後返回匹配內容,如果搜尋完了還沒有找到,就返回 None。

    “正則心法” 第七式 --findall

    第六式 我們能輕鬆的用 search 方法獲取匹配正則表示式的第一個內容

    但是...

    當我想要匹配所有符合正則表示式的所有內容呢?

    ["1234567", "7654321"]

    “正則心法” 第八式 --sub

    除了使用正則表示式提取資訊外,有時候還需要藉助它來修改文字

    Python

    “正則心法” 第九式 --compile

    最後,Python 傳授畢生功力

    準備好接收了嗎?

    將正則字串編譯成正則表示式物件,以便在後面的匹配中複用

    呼氣,吸氣,收!!!

    這套《正則心法》你 get 到了嗎?

  • 中秋節和大豐收的關聯?
  • 春節時家裡的講究和習俗有哪些?