python正則大小寫
❶ python正則表達式是什麼
python正則表達式是:
'hing'
'wing'
'123456'
'dddddd'
'regex.py'
'.*.py'
正則表達式(簡稱為 regex)是一些由字元和特殊符號組成的字元串, 描述了模式的重復或者表述多個字元。正則表達式能按照某種模式匹配一系列有相似特徵的字元串。換句話說, 它們能夠匹配多個字元串。
孤立的一個正則表達式並不能起到匹配字元串的作用,要讓其能夠匹配目標字元,需要創建一個正則表達式對象。通常向compile()函數傳入一個原始字元形式的正則表達式,即 r'.....'。
要讓正則表達式不區分大小寫,可以向re.compile()傳入re.IGNORECASE或re.I,作為第二個參數。通過傳入re.DOTALL作為re.compile()的第二個參數,可以讓句點字元匹配所有字元,包括換行字元。
❷ 趣玩Python第16關:3個技巧掌握正則
字元串的匹配查詢
Python中的re模塊中的findall函數可以對指定的字元串進行遍歷匹配,如下:
findall(pattern, string, flags=0)
pattern:指定需要匹配的正則表達式。
string:指定待處理的字元串。
flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是讓正則表達式對大小寫不敏感;re.M的模式是讓正則表達式可以多行匹配;re.S的模式指明正則符號.可以匹配任意字元,包括換行符 ;re.X模式允許正則表達式可以寫得更加詳細,如多行表示、忽略空白字元、加入注釋等。
字元串的匹配替換
re模塊中的sub函數的功能是替換,類似於字元串的replace方法,該函數根據正則表達式把滿足匹配的內容替換為repl,如下:
sub(pattern, repl, string, count=0, flags=0)
pattern:同findall函數中的pattern。
repl:指定替換成的新值。
string:同findall函數中的string。
count:用於指定最多替換的次數,默認為全部替換。
flags:同findall函數。
字元串的匹配分割
re模塊中的split函數是將字元串按照指定的正則表達式分隔開,類似於字元串的split,如下:
split(pattern, string, maxsplit=0, flags=0)
pattern:同findall函數中的pattern。
maxsplit:用於指定最大分割次數,默認為全部分割。
string:同findall函數中的string。
flags:同findall函數中的flags。
以上就是本次分享的全部內容了,不知大家對我講述的Python正則表達式妙用感覺怎麼樣?
腦筋急轉彎:有人想喝點牛奶解渴,卻一命嗚呼了,為什麼?
❸ 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次
❹ 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) #按照「,」、「。」、「!」分隔字元串。
['白日依山盡', '黃河入海流', '欲窮千里目', '更上一層樓', '']
注意,返回值列表中多出了一個空字元。
❺ python 正則表達式
[A-Za-z]\w+ :由開頭的1個大寫或者小寫的字母加上至少1個 字元來匹配
比如 Aaa,Aa
4xZ匹配不到,xZ4可以匹配。
❻ python正則表達式大小寫英文轉換
import re
def UpperToLow(s:str):
res = re.sub('[A-Z]',lambda m:m.group().lower(),s)
return res
if __name__ == '__main__':
print(UpperToLow('AbcdE'))