① python中re庫的常見用法
. 匹配除換行符外的任意字元
\d 匹配數字
\D 匹配非數字
\w 匹配數字字母下劃線,支持中文
\W 小寫w的反集
[abc] 匹配abc中任意一個
[a-f] 匹配字母a到f中的任意一個
x|y 匹配x或者y
^ 匹配字元串的開頭
$ 匹配字元串的結尾
{3,5} 匹配次數,最少3個,最多5個
{3,} 至少匹配3次
* 匹配前一個字元,0次或多次
+ 匹配前一個字元,1次或多次
? 當前面不是數量表達式時,代表匹配0次或1次
舉個栗子:
findall()函數的作用是匹配所有符合條件字元串,並以列表形式返回
由於.是匹配除換行符外的所有字元,{3,5} 匹配次數,最少3個,最多5個,在默認的貪婪模式下會匹配最多的字元,所以在列表中,字母a開頭的字元串後面都跟了5個字元。
可以看到在非貪婪模式下,列表中的每一項都匹配最少的字元數。
從前往後,匹配到符合條件的最短的每一個字元串
邊界字元:
^ 限定開頭
$ 限定結尾
匹配分組:
() 提取出來的只有括弧里匹配到的部分
上文中已經用到這個方法了,返回匹配到的字元串列表,如果沒有匹配到的內容,則返回空列表。
flags參數是可以省略的,不省略時代表具有其他特殊的功能,如忽略大小寫,忽略換行符等,re.S代表匹配時忽略換行符
re.search()和re.findall()的參數是一樣的,只是返回結果不同,如果匹配到了,就返回該結果的正則表達式對象;如果沒有匹配到,則返回None
使用re.search()返回匹配到的第一個字元串的正則表達式對象,找到了就會停止匹配。因此這個函數比較適合在一個大文本中找第一個出現的字元串。
若想讓這個字元串展示出來,還需要藉助group()函數。
舉個栗子:
這個函數的作用是將正則表達式編譯為一個正則表達式對象,如果要多次使用這個正則表達式的話,可以先編譯,然後復用,使程序更高效一些,對這個對象繼續使用.match(string)就可以顯示匹配到的正則表達式對象,後續如果想要獲取具體內容的話,和上面是一眼國的,直接使用group(0)就可以啦。
如果不考慮復用的話,和re.mach(pattern, string)的效果是一樣的。
從運行結果也可以看出,re.match()和re.search()的區別,雖然二者都會返回匹配到的正則表達式對象,但是re.match()是從字元串的最開始位置開始匹配的,如果最開始的字元不匹配則會直接返回None;而re.search()則會一直往後找,直到找到第一個符合條件的字元串。
re.sub()函數用於替換字元串中的匹配項
舉個栗子:
將所有數字替換為了一個空格。
② python 正則表達式過濾特殊字元
>>>灶蠢昌 import re
>>> string = "123我adfasdf?(((q,[]"
>>> string
'123我adfasdf?(((q,[]'
>隱扒>> sub_str = re.sub(u"([^\u4e00-\檔鍵u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)
>>> sub_str
'123我adfasdfq'
③ python3怎樣過濾字元串中的表情
importre
emoji_pattern=re.compile(
u"(ud83d[ude00-ude4f])|"#emoticons
u"(ud83c[udf00-uffff])|"#symbols&pictographs(1of2)
u"(ud83d[u0000-uddff])|"#symbols&pictographs(2of2)
u"(ud83d[ude80-udeff])|"#transport&mapsymbols
u"(ud83c[udde0-uddff])"#flags(iOS)
"+",flags=re.UNICODE)defremove_emoji(text):
returnemoji_pattern.sub(r'',text)
來自:http://blog.csdn.net/orangleliu/article/details/67632628?utm_source=gold_browser_extension
上面那個有時不好用,
try:
#pythonUCS-4build的處理方式
highpoints=re.compile(u'[U00010000-U0010ffff]')
exceptre.error:
#pythonUCS-2build的處理方式
highpoints=re.compile(u'[uD800-uDBFF][uDC00-uDFFF]')
resovle_value=highpoints.sub(u'??',src_string)
嘗試一下這個。
④ 用python實現,找出一個字元串中的重復字元子串和字元串數量
代碼如下:
⑤ python如何用正則表達式過濾數字
正則表升脊達式枝搭:^\d+(\.\d+)?$
你可以用這個正猛笑拿則表達式匹配輸入的字元,如果不匹配說明是非法的字母和字元.
⑥ Python實現文本過濾去重
具擾磨體的公式就不貼燃李蠢出來了,外面一大堆,主要記錄一下Python的皮陪實現方式
⑦ python中,re模塊怎麼去掉字元串
re.split
可以使用re.split來分割字帆晌符串,如:re.split(r』\s+』, text);將字元串按空格分割成一個單詞列表。
原型:
re.split(pattern, string, maxsplit=0)
通過正則表達式將字元串分離。如果用括弧將正則表達式括起來,那麼匹配的字元串也會被列蠢轎罩入到list中返回。maxsplit是分離的次數,maxsplit=1分離一次,默認為0,不限制次數。
例如:
re.split(『\W+』, 『Words, words, words.』)
[『Words』, 『words』, 『words』, 」]
如果字元串帶鬧不能匹配,將會返回整個字元串的list。
re.split(「a」,」bbb」)
[『bbb』]
---------------------
⑧ python 中re.findall ()的問題
第一個帆空伍問題,答案是不能用成coords.group(1),re.findall返回的是一個列表,讀取列表需要用coords[0]這種方式
第二個問題,你用正則找出來的結果再用正則過濾一遍:
importre
print(re.sub(r'(.*),虧高(.*),(.*),(.*)',r'1,c2,34',態或str))
⑨ python 怎麼過濾 emoji 表情符號
deffilter_emoji(desstr,restr=''):
try:
co=re.compile(u'[U00010000-U0010ffff]')
exceptre.error:
co=re.compile(u'[uD800-uDBFF][uDC00-uDFFF]')
returnco.sub(restr,desstr)
⑩ python裡面imort re作用是什麼
Python中的 re 模塊是正則表達式計算模塊,re的意思是:regular 正則表達式
正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。通常被用來檢索、替換那些符合某個模式(規則)的文本。