導航:首頁 > 編程語言 > pythonip地址正則表達式

pythonip地址正則表達式

發布時間:2024-07-11 06:45:03

A. python的正則表達式

1,正則表達式的一些內容

        正則表達式主要是用來匹配文本中需要查找的內容,例如在一片文章中找出電話號碼,就中國的來說11位純數字(不說座機),則使用"d{11}" 意味匹配數字11次,就能准確的查找出文本中的電話號碼. 還有就是在編寫網路爬蟲的時候需要提取很多超鏈接再次進行爬取,使用正則表達式就很方便.直接匹配http開頭就行,當然也可以使用beautifulsoup的select方法.

看下面的程序看看正則表達提取文本中的郵箱:


w 匹配字母,數字,下劃線 

+ 匹配1次或者多次
re是正則表達式的工具包,工具包出錯的話在anaconda的命令行輸入"pip install re"安裝,其他的工具包也是如此.

re.compile()中的r示意不是轉義字元,也就是保持後面字元串原樣,findall返回一個列表.下面還有一個版本的程序略有不同.


compile的另一個參數re.IGONORECASE(忽略大小寫),還可以是re.DORALL,多行模式,具體功能也是模糊不清,不過在使用通配符 . 匹配的時候加上re.DOTALL參數能夠匹配換行.如果希望忽略大小寫和多行模式都開啟可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .

表達式使用( ),對匹配到的內容分為3組 也就是(w+)出現字母,數字,下劃線一次或多次,這個分組就是下面使用match對象的grou()方法的時候的參數.不給參數和參數0都是得到整個匹配到的內容,  參數1得到第一個括弧匹配到的內容,以此類推參數2和3,如果沒有括弧分組的話使用參數會出現錯誤.
search( )查找和正則式匹配的內容,只匹一次後面的那個找不到.返回一個match對象


w 匹配字母,數字,下劃線

W 匹配字母,數字.下劃線之外的所有字元

d 匹配數字

D 匹配非數字

s 匹配空格,製表符,換行符

S匹配除空格製表符,換行符之外的其他字元

[ .... ]定義自己的匹配,如[aeiouAEIOU ]匹配所有的母音字母,注意不是匹配單詞.

{最少次數,最多次數},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默認為匹配最多次數(貪心匹配),非貪心模式在後面加上問號 


?  可選 0次或者1次吧  

+匹配1次或多次

*匹配0次或者多次

^ 判斷開頭 ^d 如果待匹配串是數字開頭則返回第一個數字

$判斷結尾  d$  如果待匹配串是數字結尾則返回最後一個數字

.   通配符,匹配除換行之外的所有字元

   d{11}  匹配數字11次

    . * 匹配所有字元除 換行

[a-zA-Z0-9._%+-]  小寫和大寫字母、數字、句點、下劃線、百分號、加號或短橫

[a-zA-Z]{2,4} 匹配字母 2 - 4次

B. python 正則表達式.* 是什麼意思

這看個,就可以看出\.應當是在代表一個.號,因為.在正則里有特定的含義,所以使用時要加轉義,就是一個.的意思

C. 學Python正則表達式,這一篇就夠了

正則表達式是一個特殊的字元序列,可以幫助您使用模式中保留的專門語法來匹配或查找其他字元串或字元串集。 正則表達式在UNIX世界中被廣泛使用。

註:很多開發人員覺得正則表達式比較難以理解,主要原因是缺少使用或不願意在這上面花時間。

re模塊在Python中提供對Perl類正則表達式的完全支持。如果在編譯或使用正則表達式時發生錯誤,則re模塊會引發異常re.error。

在這篇文章中,將介紹兩個重要的功能,用來處理正則表達式。 然而,首先是一件小事:有各種各樣的字元,這些字元在正則表達式中使用時會有特殊的意義。 為了在處理正則表達式時避免混淆,我們將使用:r'expression'原始字元串。

匹配單個字元的基本模式

編譯標志可以修改正則表達式的某些方面。標志在re模塊中有兩個名稱:一個很長的名稱,如IGNORECASE,和一個簡短的單字母形式,如。

1.match函數

此函數嘗試將RE模式與可選標志的字元串進行匹配。

下面是函數的語法 :

這里是參數的描述 :

pattern : 這是要匹配的正則表達式。

string : 這是字元串,它將被搜索用於匹配字元串開頭的模式。 |

flags : 可以使用按位OR(|)指定不同的標志。 這些是修飾符,如下表所列。

re.match函數在成功時返回匹配對象,失敗時返回None。使用match(num)或groups()函數匹配對象來獲取匹配的表達式。

示例

當執行上述代碼時,會產生以下結果 :

2.search函數

此函數嘗試將RE模式與可選標志的字元串進行匹配。

下面是這個函數的語法 :

這里是參數的描述 :

pattern : 這是要匹配的正則表達式。

string : 這是字元串,它將被搜索用於匹配字元串開頭的模式。 |

flags : 可以使用按位OR(|)指定不同的標志。 這些是修飾符,如下表所列。

re.search函數在成功時返回匹配對象,否則返回None。使用match對象的group(num)或groups()函數來獲取匹配的表達式。

示例

當執行上述代碼時,會產生以下結果 :

3.匹配與搜索

Python提供基於正則表達式的兩種不同的原始操作:match檢查僅匹配字元串的開頭,而search檢查字元串中任何位置的匹配(這是Perl默認情況下的匹配)。

示例

當執行上述代碼時,會產生以下結果 :

4.搜索和替換

使用正則表達式re模塊中的最重要的之一是sub。

模塊

此方法使用repl替換所有出現在RE模式的字元串,替換所有出現,除非提供max。此方法返回修改的字元串。

示例

當執行上述代碼時,會產生以下結果 :

5.正則表達式修飾符:選項標志

正則表達式文字可能包含一個可選修飾符,用於控制匹配的各個方面。 修飾符被指定為可選標志。可以使用異或(|)提供多個修飾符,如前所示,可以由以下之一表示 :

6.正則表達模式

除了控制字元(+ ? . * ^ $ ( ) [ ] { } | ),所有字元都與其自身匹配。 可以通過使用反斜杠將其轉換為控制字元。

7.正則表達式示例

字元常量

字元類

特殊字元類

重復匹配

非貪婪重復

這匹配最小的重復次數 :


用圓括弧分組

反向引用

這與以前匹配的組再次匹配 :

備擇方案

python|perl : 匹配「python」或「perl」

rub(y|le) : 匹配 「ruby」 或 「ruble」

Python(!+|?) : 「Python」後跟一個或多個! 還是一個?

錨點

這需要指定匹配位置。

帶括弧的特殊語法


開課吧廣場-人才學習交流平台-開課吧

D. 請教Python中匹配IP的正則表達式

下面是IPv4的IP正則匹配表達式

importre
#簡單的匹配給定的字元串是否是ip地址,下面的例子它不是IPv4的地址,但是它滿足正則表達式
ifre.match(r"^(?:[0-9]{1,3}.){3}[0-9]{1,3}$","272.168,1,1"):
print"IPvaild"
else:
print"IPinvaild"
#精確的匹配給定的字元串是否是IP地址
ifre.match(r"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","223.168.1.1"):
print"IPvaild"
else:
print"IPinvaild"
#簡單的從長文本中提取中提取ip地址
string_ip="isthis289.22.22.22ip?
result=re.findall(r"(?:[0-9]{1,3}.){3}[0-9]{1,3}",string_ip)
ifresult:
printresult
else:
print"recannotfindip"
#精確提取IP
result=re.findall(r"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",string_ip):
ifresult:
printresult
else:
print"recannotfindip"

下面是IPv6的正則匹配表達式

string_IPv6="1050:0:0:0:5:600:300c:326b"
#匹配是否滿足IPv6格式要求,請注意例子里大小寫不敏感
ifre.match(r"^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$",string_IPv6,re.I):
print"IPv6vaild"
else:
print"IPv6invaild"
#提取IPv6,例子里大小寫不敏感
result=re.findall(r"(?<![:.w])(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}(?![:.w])",string_IPv6,re.I)
#列印提取結果
printresult

E. python正則表達式是什麼

正則表達式(regex)用於探索給定字元串中的固定模式。我們想找到的模式可以是任何東西。可以創建類似於查找電子郵件或手機號碼的模式。還可以創建查找以a開頭、以z結尾的字元串的模式。

創建模式:

使用正則表達式時,首先需要學習的是如何創建模式。接下來將對一些最常用的模式進行逐一介紹。可以想到最簡單的模式是一個簡單的字元串。

pattern = r'times'

string = "It was the best of times, it was the worst of times."

print(len(re.findall(pattern,string)))

注意:

「正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或re),是計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本」,那使用正則表達式的目的是什麼呢?網路中只寫了兩句話:

1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」)。

2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。

大家可以簡單的理解為兩點:search和match。OK,了解了正則表達式的概念和作用,我們趕緊進入Python的學習吧!正則表達式不是Python獨有的武器,但Python中的正則表達式無疑是最簡單卻又最強大的。

F. Python中正則表達式的常用元字元有哪些呢

Python 中常用的正則表達式元字元包括:

  1. .:匹配任意一個字元(除了換行符 )。

  2. ^:匹配字元串的開頭。

  3. $:匹配字元串的結尾。

  4. *:匹配前面的字元 0 次或多次。

  5. +:匹配前面的字元 1 次或多次。

  6. ?:匹配前面的字元 0 次或 1 次。

  7. {n}:匹配前面的字元恰好 n 次。

  8. {m,n}:匹配前面的字元至少 m 次,至多 n 次。

  9. []:匹配方括弧內的任意一個字元。

  10. ():標記一個子表達式的開始和結束位置。

  11. |:表示或,匹配符號左右兩邊的任意一個表達式。

  12. :用來轉義元字元或者表示特殊字元。

G. Python其實很簡單 第十一章 正則表達式

正則表達式是一個特殊的字元序列,它用來檢查一個字元串是否與某種模式匹配。正則表達式在編譯程序中至關重要,但並不是每個人都需要特別深入的學習和掌握。在此,只介紹一些最基本的應用。

1、元字元

元字元是構成正則表達式的一些特殊字元。在正則表達式中,元字元被賦予了新的含義。

下面介紹一些常用的元字元及其含義:

. 匹配除換行符以外的任意字元。

w 匹配字母、數字、下劃線或漢字。

W 匹配w所匹配的字元以外的字元。

s 匹配單個空白符(包括Tab鍵和換行符)。

S 匹配除s匹配的字元以外的字元。

d 匹配數字。

b 匹配單詞的分界符,如:空格、標點符號或換行符。

^ 匹配字元串的開始

$ 匹配字元串的結束

2、限定符

限定符是在正則表達式中用來指定數量的字元。常用的限定符有:

? 匹配前面的字元0或1次。如:zo?m可以匹配zom和zm,但不能匹配 zoom

+ 匹配前面的字元1或n次。如:zo?m可以匹配zom和zoom,但不能匹配zm

* 匹配前面的字元0或n次。如:zo?m可以匹配zom、zoom和zm

{n} 匹配前面的字元n次。如:zo{2}m可以匹配zoom,但不能匹配zom和zm

{n,} 匹配前面的字元至少n次。如:zo{1,}m可以匹配zom和zoom,但不能匹配zm

{n,m} 匹配前面的字元至少n次,最多m次。如:zo{1,2}m可以匹配zom和zoom,但不能匹配zm

3、方括弧」[ ]」的用途

方括弧「[ ]」里可以列出某個字元范圍。如:[aeiou]表示匹配任意一個母音字母,[zqsl]表示匹配姓氏「趙錢孫李」的拼音第一個字母。

4、排除字元

方括弧」[ ]」中的「^」字元表示排除的意思,如:[^aeiou]表示匹配任意一個非母音字母的字元。

5、選擇字元

字元「|」相當於「或」。如:(^d{3}[-]d{8})|(^d{4}[-]d{7})$可以匹配形如」 - 」或「 - 」的電話號碼格式。

6、轉義字元

對於已經用於定義元字元和限定符的字元,需要加轉義符「」來表示。

如:為了匹配形如「192.168.0.1」的IPv4地址(1~255.0~255.0~255.0~255),可以用這樣的正則表達式:^(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

這里解釋一下第一段IP地址的規則,取值范圍為1~255,可分解為以下情況:

250~255:25[0-5];

200~249:2[0-4][0-9];

100~199:[01]{1}[0-9]{2};

0~99: [0-9]{1}[1-9]

再加上」.」: .

其他三段地址和第一段相似。

7、「( )」可以用於分組

在正則表達式中,用「( )」括起來的部分是一個整體。

8、r(或R)的意義

在正則表達式中,為了保證模式字元串為原生字元串(沒有經過加工處理的字元串),可以在模式字元串前加上一個字元『r』或『R』。例如:

# 這里用到對的re.match()方法接下來介紹

>>> import re # 導入re模塊

>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'不能匹配』Python』

>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'可以匹配』Python』

在上述代碼中,原本要用作匹配單詞開始或結束的元字元』b』在表達式中字元串中會被視為轉義一個字元『b』,為了轉義』b』就不得不再加一個』』符號。

也可以採用下面的方法:

>>> re.match(r'bPy[a-z]+','Python') #加字元』r』,可以保證原生字元串

9、match()方法

Match()方法 嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match() 就返回 none。

語法格式:

re.match(pattern, string, [flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例:

import re #導入re模塊

print(re.match('www', 'www.python.org/').span()) #span()函數可以獲取匹配的位置

print(re.match('org', 'www.python.org'))

輸出結果為:

(0, 3) #在位置0到3(不包括3)匹配成功

None #從起始位置未能匹配成功

10、search()方法

search()方法用於在整個字元串中搜索第一個匹配的值,如果匹配成功,則返回Match對象,否則返回None。

語法格式:

re.search(pattern, string, [flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例如:

>>> re.search(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.')

可以看出,目標字元串「It's easy to use Python, but it's not easy to learn Python.」中一共有兩個『Python』,search()方法可以從字元串的起始位置開始查找到『Python』,當找到第一個匹配值後就停止查找,返回位置信息。

match()和search()的比較

match()要求目標字元串的起始位置就能匹配,search()對目標字元串全段進行逐次匹配,只要首次匹配成功就停止匹配。

請看下例:

>>> import re

>>> print(re.match(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

輸出結果:None

11、findall()方法

findall()方法用於在整個字元串中搜索所有匹配的值,如果匹配成功,則返回以匹配值為元素的列表,否則返回空列表。

語法格式:

re.findall(pattern, string[, flags])

其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。

例:

>>> import re

>>>print(re.findall(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

輸出結果:['Python', 'Python']

可以看出,findall()的結果沒有指出匹配的具體位置。

12、正則表達式的應用

字元串替換

這里要用到sub()方法。它的語法格式如下:

re.sub(pattern, repl, string [,count] [,flgs])

其中,pattern是模式字元串;repl是用於替換的字元串;string是原字元串;可選參數count為模式匹配後替換的最大次數,省缺表示替換所有的匹配;可選參數flags的意義與前面的方法的該參數一致。

例:

>>> import re

>>> str1='x=36.567 y=123.234'

>>> str2=re.sub('.d+','',str1) #用空格代替小數點及其後的數字

>>> print(str2)

輸出結果:x=36 y=123

分隔字元串

這里要用到split()方法。它的返回值為一個列表,它的語法格式如下:

re.split(pattern, string [,maxsplit] [,flgs])

其中,pattern是模式字元串;string是原字元串;可選參數maxsplit為最大拆分次數,省缺表示拆分所有的匹配;可選參數flags的意義與前面的方法的該參數一致。

例:

>>> import re

>>> str='白日依山盡,黃河入海流。欲窮千里目,更上一層樓!'

>>> re.split(r',|。|!',str) #按照「,」、「。」、「!」分隔字元串。

['白日依山盡', '黃河入海流', '欲窮千里目', '更上一層樓', '']

注意,返回值列表中多出了一個空字元。

H. Python中正則表達式的匹配規則總結

其他關於Python的總結文章請訪問: https://www.jianshu.com/nb/47435944

正則表達式用來匹配字元串,在python中可以使用 re 模塊來完成,本篇做一個對正則表達式的匹配規則的總結

在上述的精確匹配後可以跟上一些符號來進行模糊的匹配:

可以使用中括弧的形式進行范圍匹配,中括弧表達式後邊可以跟上上述模糊匹配的符號來表示數量

多個條件可以 緊跟著寫在同一個中括弧中 ,比如:
[a-zA-Z] :匹配一個大、小寫字母

閱讀全文

與pythonip地址正則表達式相關的資料

熱點內容
幼兒編程教育培訓多少錢 瀏覽:402
經常生氣有什麼東西能解壓 瀏覽:900
代理伺服器地址和埠可以怎麼填 瀏覽:62
unity5手游編譯模型 瀏覽:265
安卓無人機app源碼 瀏覽:808
pl1編程語言 瀏覽:801
台達plc編程換算指令大全 瀏覽:174
手機上的編程游戲 瀏覽:108
伺服器密碼機有什麼用 瀏覽:477
dos磁碟命令 瀏覽:955
單片機cpu52的功能 瀏覽:691
opc伺服器怎麼開發 瀏覽:373
覓喜是個什麼app 瀏覽:402
加密cd機 瀏覽:946
社保用什麼app繳納 瀏覽:313
nodevlinux 瀏覽:582
騰訊tt伺服器怎麼登錄密碼 瀏覽:898
windows命令提示符 瀏覽:352
win7管理員許可權命令 瀏覽:729
地圖app哪個適合老年人用 瀏覽:74