国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python演示解答正則為什么是最強文本處理工具

python演示解答正則為什么是最強文本處理工具

2022-01-07 10:14派森攻城獅 Python

正則表達式又稱規則表達式,通常被用來檢索、替換那些符合某個模式(規則)的文本,它是最強的文本處理工具,至于原因本文將給你答案

正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。

Python作為一門數據處理語言,經常使用正則匹配段落,比如爬蟲爬取數據時。正則表達式是Python內置的模塊,不需要額外安裝。

python演示解答正則為什么是最強文本處理工具

今天來給大家分享一份比較全面的Python正則表達式寶典,學會之后,你將掌握正則表達式的各種應用場景。

re模塊

re (Regular Expression簡寫),這個很好記住。

1.導入re模塊

在使用正則表達式之前,需要導入re模塊。

import re

2.findall()的語法:

導入了re模塊之后就可以使用findall()方法了,
re.findall(pattern, string, flags=0)

參數

pattern:必填。正則表達式
string:必填,需要檢索的文本, == 確保沒亂碼 ==
Flags:選填,功能標志位

返回數組

str="a1a2a3"
newStr=re.findall("ad",str )
nullVlue=re.findall("bd",str)
print("newStr匹配個數:",len(newStr))
print("newStr匹配結果",newStr)
print("nullVlue匹配個數:",len(nullVlue))
print("nullVlue匹配結果",nullVlue)

顯示如下:

newStr匹配個數: 3
newStr匹配結果 ["a1", "a2", "a3"]
nullVlue匹配個數: 0
nullVlue匹配結果 []

基本語法已經介紹完成了。

正則表達式

1.傻瓜式截取findall

import re

text="aaa bbb ccc"

rol="aaa (.*) ccc"

rul=re.findall(rol ,text)

print(rul)

顯示如下:

["bbb"]

直接復制原來的文本,把想要提取的文本替換成(.*)

python演示解答正則為什么是最強文本處理工具

表達式解釋:

 

表示 意義
(pattern) 表示匹配pattern并獲取這一匹配。要匹配圓括號字符,請使用""。
. 匹配除“ "之外的任何單個字符。要匹配包括" "在內的任何字符,請使用像"(.| )"的模式。
* 匹配前面的子表達式零次或多次。例如,zo*能匹配“z"以及"zoo"。*等價于{0,}。

 

增加替代

import re

text = "<li><a href="/2/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >動作片</a></li> <li><a href="/1/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >喜劇片</a></li>"

rol = r"<li><a href=".*?" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >(.*?)</a></li>"

rul = re.findall(rol, text)

print(rul)

顯示:

["動作片", "喜劇片"]

表達式解釋:

python演示解答正則為什么是最強文本處理工具

 

表示 意義
? 非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。
pattern 不帶( )表示匹配pattern匹配值不獲取~~獲取值不輸出~~。

 

保留獲取

import re

text = "<li><a href="/2/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >動作片</a></li> <li><a href="/1/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >喜劇片</a></li>"

role = r"<li><a href=".*?" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >(.*?)</a></li>"

resu = re.findall(role , text)

rol2=r"(<a href=".*?" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >.*?</a>)"

rul2 = re.findall(rol2, text)

print(resu )

顯示:

["<a href="/2/" rel="external nofollow" rel="external nofollow" rel="external nofollow" >動作片</a>", "<a href="/1/" rel="external nofollow" rel="external nofollow" rel="external nofollow" >喜劇片</a>"]

把括號寫在外面就可以了

傻瓜式的講完了,下面講講限定符

1 - [xyz]

字符集合。匹配所包含的任意一個字符。例如,“[abc]“可以匹配"plain"中的"a”。

import re

text = "aab 1+23 ss aac 4-56 ss"

rol = r"aa(.*?)ss"

rul1 = re.findall(rol, text)

print(rul1)

rol2 = r"aa[bc](.*?)ss"

rul1 = re.findall(rol2, text)

print(rul1)


輸出:

["b 1+23 ", "c 4-56 "]
[" 1+23 ", " 4-56 "]

== 表達式解釋 ==
①我們可以先把固定的截取下來,紅框部分。
②再通過非截取方式把b和c過濾掉,藍色部分。
③[ ]提供的就是包含功能

python演示解答正則為什么是最強文本處理工具

2 - {}

 

表示 意義
{n} n是一個非負整數。匹配確定的n次。例如,“o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的兩個o。
{n,} n是一個非負整數。至少匹配n次。例如,“o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,}"等價于"o+"。"o{0,}"則等價于"o*"。
{n,m} m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}"將匹配"fooooood"中的前三個o。"o{0,1}"等價于"o?"。請注意在逗號和兩個數之間不能有空格。
+ 匹配前面的子表達式一次或多次。例如,“zo+"能匹配"zo"以及"zoo",但不能匹配"z"。+等價于{1,}。。
* 匹配前面的子表達式零次或多次。例如,zo*能匹配“z"以及"zoo"。*等價于{0,}。

 

== 難度加大,b和c的個數不固定 ==

import re
#難度加大,b和c的個數不固定
text = "aabbccbb 1+23 ss aaccb 4-56 ss"

rol = r"aa[bc]{3,10}(.*?)ss"

rul1 = re.findall(rol, text)

print(rul1)

rol2 = r"aa[bc](.*?)ss"

rul2 = re.findall(rol2, text)

print(rul2)


顯示:

[" 1+23 ", " 4-56 "]
["bccbb 1+23 ", "cb 4-56 "]

python演示解答正則為什么是最強文本處理工具

3 - (?:pattern)正則斷言

斷言(Assertions)在正則表達式概念里面難理解,它通常指的是在目標字符串的當前匹配位置進行的一種測試但這種測試并不占用目標字符串,也即不會移動模式在目標字符串中的當前匹配位置。

 

表示 意義
x|y 匹配x或y。例如,“z|food"能匹配"z"或"food"。"(z|f)ood"則匹配"zood"或"food"。
(?:pattern) 匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用或字符“(|)"來組合一個模式的各個部分是很有用。
(?=pattern) 正向肯定預查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
(?!pattern) 正向否定預查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
(?!pattern) 正向否定預查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
(?<=pattern) 反向肯定預查,與正向肯定預查類擬,只是方向相反。
(?<!pattern) 反向否定預查,與正向否定預查類擬,只是方向相反。

 

== 再把開頭字符變得不固定aa和dd,結尾字符ss,ff ==

import re
#難度加大,b和c的個數不固定
#再把開頭字符變得不固定aa和dd,結尾字符ss,ff
text = "aabbccbb 1+23 ss ddccb 4-56 ff"

rol = r"aa[bc]{3,10}(.*?)ss"

rul1 = re.findall(rol, text)

print(rul1)

rol2 = r"(?:aa|dd)[bc]{3,10}(.*?)(?:ss|ff)"

rul2 = re.findall(rol2, text)

print(rul2)

顯示:

[" 1+23 "]
[" 1+23 ", " 4-56 "]

python演示解答正則為什么是最強文本處理工具

Python正則flags

編譯標志讓你可以修改正則表達式的一些運行方式。多個標志可以通過按位 OR-ing 它們來指定。如 re.I | re.M 。flags都有兩種形式,縮寫和全寫都可以。

 

表示 意義
re.I或re.IGNORECASE 忽略大小寫
re.L或re.LOCALE 使用當地locale。(python中有個locale模塊,locale代表不同的語言,地區和字符集)
re.U或re.UNICODE 使用unicode的locale
re.U或re.UNICODE 使用unicode的locale
re.M或re.MULTILINE 使用^或$時會匹配每一行的行首或行尾
re.S或re.DOTALL 使用.時能匹配換行符
re.X或re.VERBOX 忽略空白字符,而且可以加入注釋

 

re.I

import re
#難度加大,b和c的個數不固定
#再把開頭字符變得不固定aa和dd,結尾字符ss,ff
#改變字母大小寫
text = "aAbBCcbb 1+23 Ss Ddccb 4-56 fF"

rol = r"(?:aa|dd)[bc]{3,10}(.*?)(?:ss|ff)"

rul = re.findall(rol, text)
print(rul)

rul2 = re.findall(rol, text,re.I)
print(rul2)



顯示:

[]
[" 1+23 ", " 4-56 "]

python演示解答正則為什么是最強文本處理工具

re.M和re.S

import re
#難度加大,b和c的個數不固定
#再把開頭字符變得不固定aa和dd,結尾字符ss,ff
#改變字母大小寫
#在中間添加一個換行符
text = "aAbBCcbb 1+23 
 Ss Ddccb 4-56 fF"

rol = r"(?:aa|dd)[bc]{3,10}(.*?)(?:ss|ff)"

rul = re.findall(rol, text,re.I)
print(rul)

rul2 = re.findall(rol, text,re.I|re.S)
print(rul2)

顯示:

[" 4-56 "]
[" 1+23 ", " 4-56 "]

python演示解答正則為什么是最強文本處理工具

== 結果說明 ==
①默認re.M只會匹配在當前 行(非列) 里面進行匹配,“Ss”已經換行了,所以“1+23”沒有匹配到。
②re.S表示匹配多行,并且捕獲換行符
③re.S|re.I可以并行使用

# 結語 正則的匹配方法,已經寫完了,號稱萬能的文本處理工具,下篇開始講解,替換,追加。最后最后,感謝大家關注!

到此這篇關于python演示解答正則為什么是最強文本處理工具的文章就介紹到這了,更多相關python 正則內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/junior5/article/details/120288368

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久国产一级毛片高清片 | 亚洲好色视频 | av色伊人久久综合一区二区 | 综合伊人 | 免费污污视频在线观看 | 在线观看91| 欧美综合色| 亚洲狼人色 | 国产精品毛片无码 | 国产精品久久久久久久一区探花 | 亚洲视频一区在线 | 免费高清av| 免费成人在线观看视频 | 毛片免费看电影 | 午夜私人视频 | 狠狠草视频 | 亚洲好看站 | 在线中文视频 | 色视频www在线播放国产人成 | 成人午夜网站 | 免费一级毛片在线播放放视频 | 亚洲 欧美 国产 制服 动漫 | 国产精品国产a级 | 欧美a在线 | 久久精品网 | 欧美一级全黄 | 亚洲免费一区 | 精品久久久久久久中文字幕 | 中文在线a在线 | 久久高清片 | 91久久精品一区二区二区 | 久久国产精品无码网站 | 精品国产一区二区三区在线观看 | 狠狠爱亚洲 | 国产片av | 狠狠色综合网站久久久久久久 | 国产精品中文字幕在线观看 | 精品成人在线视频 | a久久| 免费日本视频 | 可以在线观看的黄色 |