關於正規表示式裡 n與 r的吐槽。

2021-07-06 10:07:31 字數 826 閱讀 7392

還是用scrapy寫的乙個小爬蟲,由於xpath有點忘記了而且對於複雜網頁和有js寫的表現部分,xpath很無力,所以我還是習慣用正則來抓內容。

好吧,遇到了下面這樣一種情形的時候:

我麥的電動車呢,誰給上一下圖,!

發自手機虎撲 m.hupu.com

我要提取中間的那部分內容,也就是與標籤中間的部分。

好吧,看著蠻簡單的,那麼問題來了。

首先,這兩個標籤的內容中間有可能出現\n而且是非常可能,所以簡單的用.*來匹配中間部分並不可行。

然後,這個html裡的內容,從這個標籤開始,換了兩行,所以我自然而然的覺得是兩個\n\n,所以我的大部分努力的正則大概是這種新式的:

r'''\n\n((?:\n|.)*?)\n\n'''

由於是在python中,採用了分組策略,通道了分組忽略的方法,也用了非貪婪模式進行重複匹配。怎麼樣,聽上去已經很不錯了是吧?

我也是這麼覺得的。

而且我直接把網頁內容賦值給乙個字串變數,用這種方式在命令列裡測試hao無問題!

然而在整個程式裡,就是什麼都採不到!!!我用了n種方式反覆測試。

最後實在沒辦法,只能一點一點測試在程式裡的正則,最後發現的問題是,

標籤後面並不是 \n\n 而是\r\n。。。。。。

去找在正規表示式的語法,在官方描述裡,\n是換行符,\r是回車符......

所以說,是眼睛欺騙了我。在看網頁源**裡,並不能分辨。

真的是非常坑爹......好吧,現在可以沒問題地跑下來了。

R語言正規表示式

本文主要說明r語言的正規表示式,主要是一些簡單的函式和stringr包常用的方法 正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。一些r自帶的正則函式 grep,主要引數為匹配規則,待匹配的字串,返回向量中匹配成功的字串的下標 s c 1234abc456 123abcdefabc 返...

jmeter正規表示式提取器裡正規表示式語法簡介

jmeter裡介面請求結束後,如果後續介面請求想要獲取本次返回結果的內容,就需要正規表示式提取器來獲取引數,當然也可以用json path extractor來提取 這個簡單一些 不過jmeter裡很多地方的約束條件和斷言都是需要正規表示式來匹配的,所以大家還是要學習一下正規表示式的語法,以便更好更...

R中的正規表示式

r中有兩種形式的正規表示式 擴充套件的和perl風格的。在部分函式中允許通過fixed true和perl true來選擇是否使用正規表示式並在perl風格和擴充套件風格中選擇,這些函式包括 grep,grep1,sub,gsub,regexpr,gregexpr,regexec,strsplit等...