python正則表達式
① python 正則表達式
正則語法:
top|123
效果:
② python 正則表達式.* 是什麼意思 詳細解釋
分開來說:
1、. 匹配任意除換行符「\n」外的字元;
2、*表示匹配前一個字元0次或無限次;
3、+或*後跟?表示非貪婪匹配,即盡可能少的匹配,如*?重復任意次,但盡可能少重復;
4、 .*? 表示匹配任意數量的重復,但是在能使整個匹配成功的前提下使用最少的重復。
如:a.*?b匹配最短的,以a開始,以b結束的字元串。如果把它應用於aabab的話,它會匹配aab和ab。
③ python正則表達式re.findall(r"\b\w+\b", s)中的r是什麼意思
在Python的string前面加上『r』, 是為了告訴編譯器這個string是個raw string,不要轉意backslash '' 。 例如, 在raw string中,是兩個字元,和n, 而不會轉意為換行符。由於正則表達式和 會有沖突,因此,當一個字元串使用了正則表達式後,最好在前面加上'r'。
例:r" 」
作用:聲明後面的字元串是普通字元串
特殊字元串中含有:轉義字元 什麼什麼的
用途:一般用在 正則表達式、文件絕對地址
1,正則表達式:
這樣就不用專門的去處理引號之中的特殊字元了
④ python中的正則表達式中的 "|"
Python中re.findall()函數是要求正則表達式在捕獲第0組數據時,要在正則表達式上加小括弧才能捕獲.
也就是說如果你要獲取整個正則表達式匹配的數據(你這里是電子郵箱地址),需要在正則表達式外面加小括弧,
然後取第0捕獲組的數據(你這里是[x[0] for x in zhengze]),
因為findall函數把每一個匹配的多個捕獲組(就是你正則表達式中的小括弧中)的數據放到一個元組里,所以要用for循環把第0捕獲組的數據取出來.
具體程序改進如下
>>>zhengze=re.findall("([A-Za-z0-9]+@(163|qq|gmail).com)",txt)
>>>[x[0]forxinzhengze]
結果就是你要的郵箱列表了.
⑤ python正則表達式基礎
下面列出: 1.測試正則表達式是否匹配字元串的全部或部分regex=ur"" #正則表達式
if re.search(regex, subject): do_something()else: do_anotherthing() 2.測試正則表達式是否匹配整個字元串 regex=ur"/Z" #正則表達式末尾以/Z結束
if re.match(regex, subject): do_something()else: do_anotherthing() 3.創建一個匹配對象,然後通過該對象獲得匹配細節(Create an object with details about how the regex matches (part of) a string) regex=ur"" #正則表達式
match = re.search(regex, subject)if match: # match start: match.start() # match end (exclusive): atch.end() # matched text: match.group() do_something()else: do_anotherthing() 4.獲取正則表達式所匹配的子串(Get the part of a string matched by the regex) regex=ur"" #正則表達式
match = re.search(regex, subject)if match: result = match.group()else: result ="" 5. 獲取捕獲組所匹配的子串(Get the part of a string matched by a capturing group) regex=ur"" #正則表達式
match = re.search(regex, subject)if match: result = match.group(1)else: result ="" 6. 獲取有名組所匹配的子串(Get the part of a string matched by a named group) regex=ur"" #正則表達式
match = re.search(regex, subject)if match:result = match.group"groupname")else:result = "" 7. 將字元串中所有匹配的子串放入數組中(Get an array of all regex matches in a string) result = re.findall(regex, subject) 8.遍歷所有匹配的子串(Iterate over all matches in a string) for match in re.finditer(r"<(.*?)/s*.*?//1>", subject) # match start: match.start() # match end (exclusive): atch.end() # matched text: match.group() 9.通過正則表達式字元串創建一個正則表達式對象(Create an object to use the same regex for many operations) reobj = re.compile(regex) 10.用法1的正則表達式對象版本(use regex object for if/else branch whether (part of) a string can be matched) reobj = re.compile(regex)if reobj.search(subject): do_something()else: do_anotherthing() 11.用法2的正則表達式對象版本(use regex object for if/else branch whether a string can be matched entirely) reobj = re.compile(r"/Z") #正則表達式末尾以/Z 結束
if reobj.match(subject): do_something()else: do_anotherthing() 12.創建一個正則表達式對象,然後通過該對象獲得匹配細節(Create an object with details about how the regex object matches (part of) a string) reobj = re.compile(regex) match = reobj.search(subject)if match: # match start: match.start() # match end (exclusive): atch.end() # matched text: match.group() do_something()else: do_anotherthing() 13.用正則表達式對象獲取匹配子串(Use regex object to get the part of a string matched by the regex) reobj = re.compile(regex) match = reobj.search(subject)if match: result = match.group()else: result ="" 14.用正則表達式對象獲取捕獲組所匹配的子串(Use regex object to get the part of a string matched by a capturing group) reobj = re.compile(regex) match = reobj.search(subject)if match: result = match.group(1)else: result ="" 15.用正則表達式對象獲取有名組所匹配的子串(Use regex object to get the part of a string matched by a named group) reobj = re.compile(regex) match = reobj.search(subject)if match: result = match.group("groupname")else: result ="" 16.用正則表達式對象獲取所有匹配子串並放入數組(Use regex object to get an array of all regex matches in a string) reobj = re.compile(regex) result = reobj.findall(subject) 17.通過正則表達式對象遍歷所有匹配子串(Use regex object to iterate over all matches in a string) reobj = re.compile(regex)for match in reobj.finditer(subject): # match start: match.start() # match end (exclusive): match.end() # matched text: match.group()字元串替換 1.替換所有匹配的子串 #用newstring替換subject中所有與正則表達式regex匹配的子串
result = re.sub(regex, newstring, subject) 2.替換所有匹配的子串(使用正則表達式對象) reobj = re.compile(regex) result = reobj.sub(newstring, subject) 字元串拆分 1.字元串拆分 result = re.split(regex, subject) 2.字元串拆分(使用正則表示式對象) reobj = re.compile(regex) result = reobj.split(subject)
⑥ python 正則表達式 (.*)
groups()返回所有捕獲組構成的tuple。你的正則表達式中有唯一一個捕獲組(.*?),而?在此處表示非貪婪匹配,即在整個正則表達式成立的前提下匹配盡可能少的字元,此處最少的情況是什麼也不匹配,整個正則表達式匹配Python中的Py,而捕獲組自然為空字元串。
⑦ python正則表達式
group和groups是兩個不同的函數。
一般,m.group(N) 返回第N組括弧匹配的字元。
而m.group() == m.group(0) == 所有匹配的字元,與括弧無關,這個是API規定的。
m.groups() 返回所有括弧匹配的字元,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)
對你給的例子:
m = re.match("([abc])+", "abc")
你的+號在括弧外面。括弧最多匹配到一個字元,要麼是a, 要麼是c,這個python引擎匹配的是末尾的c。
而m.group() == m.group(0) 這個返回的是整個匹配的字元串"abc".
關於捕獲型括弧在正則表達式里的用法,參見相關文檔。
參見http://..com/link?url=CltRBzI_-_jFl88a
⑧ python正則表達式是什麼意思
表示任意字元,*表示重復0至多次,.*表示任意字元出現0到多次