爬蟲基礎知識回顧一

2021-08-14 03:15:16 字數 3529 閱讀 7686

一、

二、正則表達:

可完成:例如:1天前 取出 1

^b.*

^b 以b開頭

. 任意乙個字元

*可出現多次

import re

line = "qbssqbss"

regex_str = "^qb.*"

if re.match(regex_str, line):

print("yes")

:以

....

結尾,3

: 以.

...結

尾,3:以3結尾

regex_str = "^qb.*ss$"

正則匹配:貪婪匹配,即從右向左匹配

import re

line = "qbssoooooooqqbss"

regex_str = ".*(q.*q).*"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

上式輸出結果為:qq

那麼:該如何匹配出「qbssoooooooq」呢?故引出「?」

「?」:代表非貪婪匹配

regex_str = ".*?(q.*q).*"

結果為:qbssoooooooqq

此時,第乙個q為非貪婪匹配,但第二個q仍為貪婪匹配。

regex_str = ".*?(q.*?q).*"

結果為:qbssoooooooq

+:限定前面的字元出現至少一次

import re

line = "qbssoooooooqqqqbss"

regex_str = ".*(q.+q).*"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

結果為:qqq

前面字元出現2次

前面字元至少出現2次

前面字元出現次數,最少2次,最多5次

regex_str = ".*(q.q).*"

| :或,先與左邊字元進行匹配

import re

line = "qbss123"

regex_str = "(qbss|qbss123)"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

else:

print("沒有匹配成功")

結果為:qbss

當然:如果:

regex_str = "(qbss123|qbss)"

結果為:qbss123

import re

line = "qbss123"

regex_str = "((qbss|qbqqss)123)"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

結果為:qbss123

當然:如果:

regex_str = "(qbss|qbqqss)123"

結果為:qbss

:匹配其中任一字元

import re

line = "18713593558"

regex_str = "(1[8357][0-9])"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

18713593558

[0-9]:匹配0-9範圍內任一數字

[^1]: 匹配非1任一字元

[.*]: 匹配本身含義,匹配.*

import re

line = "1.*7r3593550"

regex_str = "(1[.*][^1])"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

else:

print("沒有匹配成功")

結果為:1.*7r359355

\s 匹配乙個空白字元

\s 匹配乙個非空白字元 (你很好)

\s+ 匹配乙個或多個非空白字元

line = "你 好"

regex_str = "(你\s好)"

\w 等價於[a-za-z0-9_]

\w 匹配字母數字

\w 匹配非字母數字

此處有疑問

[\u4e00-\u9fa5]:漢字

import re

line = "study in 南京大學"

regex_str = ".*?([\u4e00-\u9fa5]+大學)"

match_obj = re.match(regex_str, line)

if match_obj:

print(match_obj.group(1))

南京大學

\d:數字

SVN基礎知識回顧(一)

svn的使用 一,svn伺服器的搭建 主要是安裝伺服器端和客戶端 visualsvn server和tortoisesvn。個人認為最好用visualsvn server 服務端和 tortoisesvn客戶端搭配使用。二,svn常用命令 檢視修改的檔案記錄 svn cat 顯示特定版本的某檔案內容...

基礎知識回顧一(2019 7 31)

面向過程 procedure oriented 是一種以過程為中心的程式設計思想。這些都是以什麼正在發生為主要目標進行程式設計,不同於物件導向的是誰在受影響。與物件導向明顯的不同就是封裝 繼承 類。物件導向 object oriented programming 所謂 物件 在顯式支援物件導向的語言...

MySQL知識回顧 MySQL基礎知識回顧

markdownpad document mysql mysql 是用於管理檔案的乙個軟體 服務端軟體 socket服務端 本地檔案操作 解析指令 sql語句 客戶端軟體 各種各樣 socket客戶端 傳送指令 解析指令 sql語句 ps dbms 資料庫管理系統 sql語句 需要掌握的技能 安裝 ...