遇到了乙個小蟲,特記錄之。
1.正規表示式及英文的處理如下:
>>> import re>>> b='adfasdfasf<1safadsaf>23wfsa<13131>'
>>> pat = re.compile('<.*?>')
>>> pat.findall(b)
['<1safadsaf>', '<13131>']
2. 換成中文貌似就沒反應了
>>> msg="">>> pat.findall(msg)
仔細分析了下貌似因為其中的\n字元!
甚為不解,又try了一把:
>>> msg ='<\r>asdasf'>>> pat.findall(msg)
['<\r>', '']
>>> msg='<\n>adf'
>>> pat.findall(msg)
['']
>>> msg='<\s>adaf'
>>> pat.findall(msg)
['<\\s>', '']
>>> msg='<\n>asdfasf'
>>> pat.findall(msg)
['']
確實點號無法匹配特殊字元'\n'!
在這裡找到了說明。
.匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。
3.[.\n]的尷尬情況
>>> pat= re.compile('<[.\n]*?>')>>> pat.findall(msg)
['<\n>']
>>> msg'<\n>asdfasf'
>>> msg='<\nasdfs>adaf'>>> pat.findall(msg)
谷歌了一番,找到了答案,在這裡。即加入dotall選項。如下:
>>> pat = re.compile('<.*?>',re.dotall)>>> pat.findall(msg)
['<\nasdfs>', '']
正規表示式 點號
上一章講到了各種字元組,與它相關的還有乙個特殊的元字元 點號.一般文件都說,點號可以匹配 任意字元 點號確實可以匹配 任意字元 常見的數字 字母 各種符號都可以匹配,如例2 10所示。例2 10 點號.的匹配 re.search r a none true re.search r 0 none tr...
正規表示式與python
在python中有乙個非常重要也非常好用的模組re,在import re後,就能夠在python中使用正規表示式,源於此次專案要用正規表示式對html 提取一定的字元,所以在這也就用些小例子來熟悉一下正規表示式 現在就用最簡單的例子 print re.findall r 執行後結果為 這個相對來說還...
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...