Python正則表達式

歡迎關注我的微信公衆號:機器知心媛,和我一起進步吧

import re
pattern1="cat"
pattern2="brid"
string="dog runs to cat"
# print(re.search(pattern1,string))
# print(re.search(pattern2,string))
ptn=r"r[au]n"
# print(re.search(ptn,"dog runs to cat"))

string="""
dog runs to cat
I run to dog.
"""
print(re.search(r"^I",string))
print(re.search(r"^I",string,flags=re.M))  #re.M是re.MULTILINE 這個參數可以對每一行進行處理


# r"r[A-Z]n"
# r"r[a-z]n"
# r"r[0-9]n"
# r"r[0-9a-z]n"

# 按類型匹配
# 除了自己定義規則, 還有很多匹配的規則時提前就給你定義好了的. 下面有一些特殊的匹配類型給大家先總結一下, 然後再上一些例子.
# \d : 任何數字
# \D : 不是數字
# \s : 任何 white space, 如 [\t\n\r\f\v]
# \S : 不是 white space
# \w : 任何大小寫字母, 數字和 “” [a-zA-Z0-9]
# \W : 不是 \w
# \b : 空白字符 (只在某個字的開頭或結尾)
# \B : 空白字符 (不在某個字的開頭或結尾)
# \\ : 匹配 \
# . : 匹配任何字符 (除了 \n)
# ^ : 匹配開頭
# $ : 匹配結尾
# ? : 前面的字符可有可無

#重複匹配
# * : 重複零次或多次
# + : 重複一次或多次
# {n, m} : 重複 n 至 m 次
# {n} : 重複 n 次

# 舉例
# # * : occur 0 or more times
# print(re.search(r"ab*", "a"))             # <_sre.SRE_Match object; span=(0, 1), match='a'>
# print(re.search(r"ab*", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>
#
# # + : occur 1 or more times
# print(re.search(r"ab+", "a"))             # None
# print(re.search(r"ab+", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>
#
# # {n, m} : occur n to m times
# print(re.search(r"ab{2,10}", "a"))        # None
# print(re.search(r"ab{2,10}", "abbbbb"))   # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

#找到內容的分組
match=re.search(r"(\d+),Date:(.+)","ID:021523,Date:Feb/12/2017")
print(match.group())  # 021523, Date: Feb/12/2017
print(match.group(1))  # 021523
print(match.group(2))    # Date: Feb/12/2017

#有時候組會很多,可以在括號開頭寫上 ?P<名字> 這樣的形式給組定義個名字
match=re.search(r"(?P<id>\d+),Date:(?P<date>.+)","ID:021534,Date:Feb/12/2017")
print(match.group("id"))
print(match.group("date"))


#findall
print(re.findall(r"r[ua]n","run ran ren"))
#這裏的|是or的意思
print(re.findall(r"run|ran","run ran ren"))

#replace 匹配掉一些字符串
print(re.sub(r"r[au]ns","catches","dog runs to cat")) #dog catches to cat

#split 分割功能 ,產生一個列表保存所有單詞
print(re.split(r"[,;\.]","a;b,c.d;e")) #['a', 'b', 'c', 'd', 'e']

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章