python就業班----正規表示式及re應用
"""正規表示式"""
# 1.匯入re模組
# import re
# # 2.使用match方法進行匹配操作
# result=re.match(正規表示式,要匹配的字串)
# # 3.如果上一步匹配到資料的話,可以i使用group方法來提取資料
# result.group()
"""re模組示例(匹配以itcast開頭的語句)"""
# import re
# result=re.match(r"itcast","itcast.cn")
# print(result) #匹配時有返回值<re.Match object; span=(0, 6), match='itcast'>,否則沒有返回值
# print(result.group()) # 提取資料
"""匹配單個字元"""
# import re
# result=re.match(r"速度與激情1","速度與激情1")
# print(result)
# print(result.group())
#
# # 匹配數字\d,一個\d等於一位數字
# result2=re.match(r"速度與激情\d","速度與激情2")
# print(result2)
# print(result2.group())
#
# result3=re.match(r"速度與激情\d","速度與激情8")
# print(result3)
# print(result3.group())
#
#
# print(re.match(r"速度與激情[12345678]","速度與激情8").group())
# print(re.match(r"速度與激情[12345678]","速度與激情6").group())
# print(re.match(r"速度與激情[1-36-8]","速度與激情6").group())
# print(re.match(r"速度與激情[1-36-8]","速度與激情7").group())
#
# # 匹配數字和字母
# print(re.match(r"速度與激情[1-8abcd]","速度與激情5").group())
# print(re.match(r"速度與激情[1-8abcd]","速度與激情a").group())
# # print(re.match(r"速度與激情[1-8abcd]","速度與激情e").group()) # 不能匹配
# print(re.match(r"速度與激情[1-8a-zA-Z]","速度與激情F").group())
#
# #\w 匹配單詞字元,即a-z,A-Z,0-9,且支援其他的語言-----慎用
# print(re.match(r"速度與激情\w","速度與激情F").group())
# print(re.match(r"速度與激情\w","速度與激情a").group())
# print(re.match(r"速度與激情\w","速度與激情1").group())
# print(re.match(r"速度與激情\w","速度與激情0").group())
#
# #\s 匹配空白s
# print(re.match(r"速度與激情 \d","速度與激情 1").group())
# print(re.match(r"速度與激情\s\d","速度與激情\t1").group())
#
# # \D:匹配非數字
# # \S:匹配非空白
# # \W:匹配非單詞字元
# # . :匹配任意單個字元
# print(re.match(r"速度與激情.","速度與激情1").group())
# print(re.match(r"速度與激情.","速度與激情a").group())
# print(re.match(r"速度與激情.","速度與激情!").group())
"""匹配多個字元"""
# {m,n}:匹配前一個字元出現從m到n次
import re
# print(re.match(r"速度與激情\d{1,2}","速度與激情12").group())
# print(re.match(r"速度與激情\d{1,2}","速度與激情1").group()) # {}限制位數{1,2}:一位兩位都可以
# print(re.match(r"速度與激情\d{1,3}","速度與激情123").group()) # {1,2,3} :一位兩位三位都可以
# print(re.match(r"速度與激情\d{3}","速度與激情123").group()) # {3} :必須為三位,否則報錯
# # print(re.match(r"速度與激情\d{3}","速度與激情13").group()) # {3} :必須為三位,否則報錯
# ?:匹配前一個字元出現0次或者1次,即要麼0次,要麼1次
# print(re.match(r"021-\d{8}","021-12345678").group())
# print(re.match(r"021-?\d{8}","021-12345678").group())
# print(re.match(r"\d{3,4}-?\d{8}","0186-12345678").group())
# html_content="""fgdhjh
# asdfghjk
# wertyuio
# wertyuio
# werfghuiop'
# sdrtyj uiojhh
# wertyui'
# wqertyui
# yfuio
# thjk"""
# print(html_content)
# . :匹配任意1個字元,除了\n換行之外
# print(re.match(r".*","asd").group())
# print(re.match(r".*","a1").group())
# print(re.match(r".*","").group())
#
# # *:匹配任意多個,可以有也可以沒有
# print(re.match(r".*",html_content).group())
#
# #re.s:讓點.包括/n
# print(re.match(r".*",html_content,re.S).group())
# + :匹配前一個字元出現1次或者無限次,即至少有1次
# print(re.match(r".+","f").group())
# print(re.match(r".+","fty").group())
# print(re.match(r".+","fasdfgh").group())
# # print(re.match(r".+","").group()) #報錯
"""需求:匹配出,變數名是否有效"""
import re
#
# names=["name1","_name","2_name","__name__"]
#
# for name in names:
# #\w 匹配單詞字元,即a-z,A-Z,0-9,且支援其他的語言
# ret=re.match("[a-zA-z_]+[\w]*",name)
# if ret:
# print("變數名%s符合要求:"%ret.group())
# else:
# print("變數名%s非法"%name)
# import re
#
# def main():
# names=["age","_age","1age","age1","a_age","age_1_","age!","a#123","_____"]
# for name in names:
# ret=re.match(r"[a-zA-Z_][a-zA-Z0-9_]*",name) # match可以判斷以誰開頭,不能判斷以誰結尾
# if ret:
# print("變數名:%s符合要求,通過正則匹配出來的是%s" %(name,ret.group()))
# else:
# print("變數名%s非法" % name)
#
#
#
# if __name__=="__main__":
# main()
""" ^:判斷以誰開頭 """
"""判斷結尾:$"""
# import re
#
# def main():
# names=["age","_age","1age","age1","a_age","age_1_","age!","a#123","_____"]
# for name in names:
# # $:判斷結尾
# ret=re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$",name)
# if ret:
# print("變數名:%s符合要求,通過正則匹配出來的是%s" %(name,ret.group()))
# else:
# print("變數名%s非法" % name)
#
#
#
# if __name__=="__main__":
# main()
"""匹配163郵箱地址"""
# import re
#
# def main():
# email=input("請輸入一個郵箱地址:")
# # 如果在正規表示式中用到了某些普通的字元:.?等,僅僅需要在他們前面新增一個反斜槓轉義
# ret=re.match(r"[a-zA-Z_0-9]{4,20}@163\.com$",email)
# if ret:
# print("%s符合要求---"%email)
# else:
# print("%s不符合要求---"%email)
#
#
# if __name__=="__main__":
# main()
"""分組匹配"""
# import re
# 對多種郵箱進行判斷
"""
|:匹配左右任意一個表示式
(ab):將括號中字元作為一個分組
\num:引用分組num匹配到字串
(?P<name>):分組起別名
(?P=name): 引用別名為name分組匹配到的字串
"""
# print(re.match(r"[a-zA-Z_0-9]{4,20}@(163|126|qq|google)\.com$","laowang@163.com").group())
# print(re.match(r"[a-zA-Z_0-9]{4,20}@(163|126)\.com$","laowang@126.com").group())
#
# # 匹配成功後取部分內容:只需新增小括號取括號裡的內容
# print(re.match(r"[a-zA-Z_0-9]{4,20}@(163|126)\.com$","laowang@126.com").group(1)) # 126
# print(re.match(r"([a-zA-Z_0-9]{4,20})@(163|126)\.com$","laowang@126.com").group(1)) # laowang
# print(re.match(r"([a-zA-Z_0-9]{4,20})@(163|126)\.com$","laowang@126.com").group(2)) # 126
# \num:引用分組num匹配到字串
# import re
# html_str="<h1>hahahaha</h1>"
# print(re.match(r"<(\w*)>.*</\1*>",html_str).group())
# html_str="<body><h1>hahhahah</h1></body>"
# print(re.match(r"<(\w*)><(\w*)>.*</\2></\1>",html_str).group())
# print(re.match(r"<(?P<p1>\w*)><(?P<p2>\w*)>.*</(?P=p2)></(?P=p1)>",html_str).group())
"""re模組的高階用法:python自帶的"""
# """1.search:不會從頭匹配,但是一旦匹配一部分到就算匹配到了"""
#需求:匹配文章閱讀次數
# import re
# print(re.search(r"\d+","閱讀的次數為000099999").group())
# print(re.search(r"\d+","閱讀的次數為99999,點贊數為:100").group())
# """2.findall:返回值是一個列表,返回的是資料"""
# 需求:統計出python、c、c++相應文章的閱讀次數
# import re
#
# ret=re.findall("\d+","python=9999,c=7890,c++=12345")
# print(ret) #['9999', '7890', '12345']
# """3.sub將匹配到的資料進行替換"""
# import re
# print(re.sub(r"\d+",'998',"python=997")) # python=998
# print(re.sub(r"\d+",'998',"python=997,c++=1024")) # python=998,c++=998
"""sub支援函式的呼叫"""
# import re
#
# def add(temp):
# strNum=temp.group()
# num=int(strNum)+1
# return str(num)
#
# print(re.sub(r"\d+",add,'python=997')) # python=998
#
# print(re.sub(r"\d+",add,'python=99')) # python=100
"""split根據匹配進行切割字串,並返回一個列表"""
import re
print(re.split(r":| ","info:xiaoming 33 shandong")) # ['info', 'xiaoming', '33', 'shandong']
相關文章
- python正規表示式(re模組)Python
- python re模組 正規表示式Python
- Python 正規表示式 re 模組Python
- Python 之 RE(正規表示式)常用Python
- python 關於正規表示式rePython
- python中的re(正規表示式)Python
- Python模組學習: re 正規表示式Python
- python 正規表示式re常用操作符 使用方法 怎麼用re正規表示式表示一個IP地址:0-255Python
- Python爬蟲— 1.4 正規表示式:re庫Python爬蟲
- Python正規表示式簡記和re庫Python
- python中re模組的使用(正規表示式)Python
- python爬蟲之re正規表示式庫Python爬蟲
- python基礎 之 正規表示式和re模組Python
- Python 正規表示式 re 模組簡明筆記Python筆記
- Python 正規表示式_re模組_使用compile加速PythonCompile
- 正規表示式的應用
- 正規表示式應用收集
- Java正規表示式應用Java
- 正規表示式理解及簡單應用舉例
- 20個Python 正規表示式應用與技巧Python
- 超詳細Python正規表示式操作指南(re使用),一Python
- Python 快速教程(標準庫01):正規表示式 (re包)Python
- 正規表示式re.compile的學習Compile
- Python爬蟲教程-19-資料提取-正規表示式(re)Python爬蟲
- LeetCode-10. 正規表示式匹配(Python-re包)LeetCodePython
- Python——正規表示式Python
- Python 正規表示式Python
- Python:正規表示式Python
- python正規表示式Python
- JS常用正規表示式及驗證時間的正規表示式JS
- .NET下正規表示式應用四例
- Java 正規表示式的簡單應用.Java
- 正規表示式在PHP裡的應用PHP
- Python正規表示式手稿Python
- python之正規表示式Python
- Python正規表示式大全Python
- python的正規表示式Python
- python工具_正規表示式Python