程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python中的re模塊(一)

編輯:Python

1. compile()函數

編譯正則表達式模式,返回一個對象的模式(可以把那些常用的正則表達式編譯成正則表達式對象,這樣可以提高一點效率)。

格式:

re.compile(pattern,flags=0)

例如:

import re
text = "The moment you think about giving up,think of the reason why you held on so long."
text1 = "Life is a journey,not the destination,but the scenery along the should be and the mood at the view."
rr = re.compile(r'\w*o\w*')
print(rr.findall(text)) #查找text中所有包含'o'的單詞 
print(rr.findall(text1)) #查找text1中所有包含'o'的單詞 

運行結果如下:

['moment', 'you', 'about', 'of', 'reason', 'you', 'on', 'so', 'long']
['journey', 'not', 'destination', 'along', 'should', 'mood']
  • pattern: 編譯時用的表達式字符串(即正則表達式);
  • flags:(可選)編譯標志位,用於修改正則表達式的匹配方式,如:是否區分大小寫,多行匹配等。

常用的flags有:

標志含義re.S(DOTALL)使.匹配包括換行在內的所有字符re.I(IGNORECASE)使匹配對大小寫不敏感re.L(LOCALE)做本地化識別(locale-aware)匹配,法語等re.M(MULTILINE)多行匹配,影響^和$re.X(VERBOSE)該標志通過給予更靈活的格式以便將正則表達式寫得更易於理解re.U根據Unicode字符集解析字符,這個標志影響\w,\W,\b,\B

2. match()函數

在字符串剛開始的位置匹配,在開頭匹配到目的字符便返回,如果開頭沒有目的字符將匹配失敗,返回None。

格式:

re.match(pattern, string, flags=0)

例如:

print(re.match('edu','educoder.net').group())
print(re.match('edu','www.educoder.net').group())

運行結果如下:

注:match()函數返回的是一個match object對象,而match object對象有以下方法:

  • group():返回被正則匹配的字符串;
  • start():返回匹配開始的位置;
  • end():返回匹配結束的位置;
  • span():返回一個元組包含匹配 (開始,結束) 的位置;
  • groups():返回正則整體匹配的字符串,可以一次輸入多個組號,對應組號匹配的字符串。

3. search()函數

re.search()函數會在字符串內查找模式匹配,只要找到第一個匹配然後返回。如果字符串沒有匹配,則返回None。

格式:

re.search(pattern, string, flags=0)
print(re.search('edu','www.educoderedu.net').group())
print(re.search('eduaaa','www.educoderedu.net').group())

運行結果如下:

  • 注:match()和search()比較類似,它們的區別在於match()只匹配字符串的開頭,如果開頭沒有出現目的字符串,即使後面出現了也不會進行匹配;search()函數會在整個字符內匹配,只要找到一個目的字符串就返回。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved