python正則表達式詳解
Ⅰ python 正則表達式
這個問題的確比較糾結首先明確一點
m.groups()==m.group(1)+m.group(2)+...+m.group(n)
要確定m.group(n)中的n到底是多少???
1.在你的匹配式中出現了幾次匹配成功的括弧,n就是幾
給你舉個例子m = re.match("([abc])+([abc])+", "abc"):
它出現了2次括弧,且這兩次括弧都能匹配,所以n=2。你可以print m.group(2)不會報錯,而 m = re.match("([abc])+", "abc"),print m.group(2)則會報錯
2.其次python的匹配引擎是從後面開始的
在給你舉個對比的例子:
例子1:m = re.match("([abc])+([abc])+([abc])+", "abc"):
如果你理解第一點,n=3,然後你可以print 一下 你會發現:
m.group(3)=『c』 ,m.group(2)='b',m.group(1)='a'
例子2:m = re.match("([abc])+([abc])+", "abc"):
m.group(1)=b,m.group(2)='c'
( python中說明了n在0-99間都是可以的,如果超出的話IndexErrorexception跳出)
如果你能看明白那麼應該groups的相應東西你理解的差不多了,接下來看你第二問
?表示匹配前面的表達式0個或一次,例子:go?匹配go為0或者1次
:呵呵 就是冒號的意思,所以你懂的,沒匹配到
寫那麼多,如果不明白,可以再問我哈 萬請採納
Ⅱ 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中正則表達式的匹配規則總結
其他關於Python的總結文章請訪問: https://www.jianshu.com/nb/47435944
正則表達式用來匹配字元串,在python中可以使用 re 模塊來完成,本篇做一個對正則表達式的匹配規則的總結
在上述的精確匹配後可以跟上一些符號來進行模糊的匹配:
可以使用中括弧的形式進行范圍匹配,中括弧表達式後邊可以跟上上述模糊匹配的符號來表示數量
多個條件可以 緊跟著寫在同一個中括弧中 ,比如:
[a-zA-Z] :匹配一個大、小寫字母
Ⅳ python 正則是什麼意思
Python正則就是 Python正則表達式
可以這樣理解:
正則表達式是一個特殊的字元序列,它能幫助你方便的檢查一個字元串是否與某種模式匹配。
就是你想在字元串中尋找你想要的子字元串.例如
你想匹配 "鋤禾日當午,汗滴禾下土" 里的 "日當午" 日當午就是你的正則表達式形式.
python的re 模塊使 Python 語言擁有全部的正則表達式功能。
簡單的代碼:
importre
print(re.match('www','www.runoob.com').span())
這個代碼就是你匹配網址中有沒有正則表達式"www"!
Ⅳ python 正則表達式,怎樣匹配以某個字元串開頭,以某個字元串結尾的情況
python正則匹配以xx開頭以xx結尾的單詞的步驟:
1、假設需要匹配的字元串為:site sea sue sweet see case sse ssee loses需要匹配的為以s開頭以e結尾的單詞。正確的正則式為:sS*?e
2、使用python中re.findall函數表示匹配字元串中所有的可能選項,re是python里的正則表達式模塊。findall是其中一個方法,用來按照提供的正則表達式,去匹配文本中的所有符合條件的字元串。
3、代碼和結果如下:
text ='site sea sue sweet see case sse ssee loses'
re.findall(r'sS*?e',text)
結果為:['site', 'sue', 'see', 'sse', 'ssee']
(5)python正則表達式詳解擴展閱讀:
python正則匹配,以某某開頭某某結尾的最長子串匹配
代碼如下:
regVersions = re.search(r'(V|v)[0-9].*[0-9]', filename)
if regVersions:
print regVersions.group()
Ⅵ python|正則表達式
\1指的就是捕獲組1的內容,具體內容你可以搜索下(也叫後向引用),/i是忽略大小寫,g是搜索所有內容,\b是指單詞的開頭或結尾
整個連起來/\b([a-z]+) \1\b/ig就表示在字元串中搜索重復的單詞(以字母開頭),忽略大小小,所以匹配會得到3組內容,即Is is、of of和up up
Ⅶ Python 正則表達式(完整版)
注意點:
以上量詞都是貪婪模式,會盡可能多的匹配,如果要改為非貪婪模式,通過在量詞後面跟隨一個 ? 來實現
斷言不會匹配任何文本,只是對斷言所在的文本施加某些約束
前瞻 : exp1(?=exp2) exp1 後面的內容要匹配exp2
負前瞻 : exp1(?!exp2) exp1 後面的內容不能匹配exp2
後顧: (?<=exp2)exp1 exp1 前面的內容要匹配exp2
負後顧 : (?<!exp2)exp1 exp1 前面的內容不能匹配exp2
例如:我們要查找hello,但是hello後面必須是world,正則表達式可以這樣寫: "(hello)s+(?=world)" ,用來匹配 "hello wangxing" 和 "hello world" 只能匹配到後者的hello
(?(id)yes_exp|no_exp) :對應id的子表達式如果匹配到內容,則這里匹配yes_exp,否則匹配no_exp
Ⅷ python 正則表達式怎麼匹配
Python本不等於正則語言,它只是內部集伏晌指成了一個正則引擎,這謹銷個引擎實現了正則語言的功能,在Python中,這個引擎就是re模缺配塊。所以,你要先『import re』。
下面網頁詳細介紹了正則本身和re模塊,可供參考,基本上覆蓋了所有內容。