『壹』 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中的re模塊是自帶的嗎
使用python的re模塊,盡管不能滿足所有復雜的匹配情況,但足夠在絕大多數情況下能夠有效地實現對復雜字元串的分析並提取出相關信息。
python 會將正則表達式轉化為位元組碼,利用 C 語言的匹配引擎進行深度優先的匹配。
『叄』 python 的 re模塊中如何使用變數代替要匹配的字元串
這么試試:
XH=raw_input("請輸入你的手機型號:")
XH_re=re.compile(XH+'.*?¥(d{1,4})</em>',re.DOTALL)
『肆』 python3怎麼導入re模塊
Python除了 str 對象自帶的一些方法外,re文字處理能力也很強大。
正則表達式元字元說明
[python正則表達式]
導入和查看正則表達式模塊
import re
查看正則表達式模塊方法
dir(re)
[『DEBUG』, 『DOTALL』, 『I』, 『IGNORECASE』, 『L』, 『LOCALE』, 『M』, 『MULTILINE』, 『S』, 『Scanner』, 『T』,』TEMPLATE』, 『U』, 『UNICODE』, 『VERBOSE』, 『X』, 『_MAXCACHE』, 『all『, 『builtins『, 『doc『,』file『, 『name『, 『package『, 『version『, 『_alphanum』, 『_cache』, 『_cache_repl』,』_compile』, 『_compile_repl』, 『_expand』, 『_pattern_type』, 『_pickle』, 『_subx』, 『compile』,』_reg』, 『error』, 『escape』, 『findall』, 『finditer』, 『match』, 『purge』, 『search』, 『split』,』sre_compile』, 『sre_parse』, 『sub』, 『subn』, 『sys』, 『template』]
提示:
1. 當我們不會用模塊方法的時候用help
2. py2中pattern中的字元串要和string的編碼一致,不然會找不到,這個經常出現。
『伍』 正則表達式如何滿足多行和跨行匹配
正則:
dog.+cat
.+:任意字元,1或多個
或
dog.*cat
.*:任意字元:0或多個
即dog和cat之間允許沒有任何字元,此寫法都匹配
且加上多行的參數是:
Python:
re.S = re.DOTALL
完整代碼:
(網路知道的編輯器中竟然不能輸入代碼,鄙視👎之)
"""
Function;
正則表達式如何滿足多行和跨行匹配?_網路知道
https://..com/question/989230535019059459.html
Author: Crifan Li
Update: 20200208
"""
import re
yourMultipleLineStr = """
first line dog
second line cat
third line no animal
"""
foundMatched = re.search("dog.+cat", yourMultipleLineStr, re.S)
print("foundMatched=%s" % foundMatched)
if foundMatched:
matchedStr = foundMatched.group(0)
print("matchedStr=%s" % matchedStr)
# foundMatched=<re.Match object; span=(12, 31), match='dog second line cat'>
# matchedStr=dog
# second line cat
具體語法詳見:
re --- 正則表達式操作 — Python 3.8.1 文檔
re.S
re.DOTALL
讓'.'特殊字元匹配任何字元,包括換行符;如果沒有這個標記,'.'就匹配除了換行符的其他任意字元。對應內聯標記(?s)。
-》就可以讓上面的 點. 可以匹配到 換行符 -》 就可以去跨行去匹配了
在線測試效果截圖:
RegExr: Learn, Build, & Test RegEx
更多內容,詳見我的教程:
應用廣泛的超強搜索:正則表達式
『陸』 python正則表達式是什麼
python正則表達式是:
'hing'
'wing'
'123456'
'dddddd'
'regex.py'
'.*.py'
正則表達式(簡稱為 regex)是一些由字元和特殊符號組成的字元串, 描述了模式的重復或者表述多個字元。正則表達式能按照某種模式匹配一系列有相似特徵的字元串。換句話說, 它們能夠匹配多個字元串。
孤立的一個正則表達式並不能起到匹配字元串的作用,要讓其能夠匹配目標字元,需要創建一個正則表達式對象。通常向compile()函數傳入一個原始字元形式的正則表達式,即 r'.....'。
要讓正則表達式不區分大小寫,可以向re.compile()傳入re.IGNORECASE或re.I,作為第二個參數。通過傳入re.DOTALL作為re.compile()的第二個參數,可以讓句點字元匹配所有字元,包括換行字元。