亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python 正則表達式(轉義問題)

2020-02-23 06:14:31
字體:
來源:轉載
供稿:網友

先說一個比較囧的事情:在寫蝦米音樂試聽下載器的時候遇到一個問題,因為保存的文件都是用音樂的標題命名的,所以碰到一些諸如「対峙/out border」等含有非法字符(哼哼,說的就是你 →_→ Windows)的標題的時候,就會保存失敗。于是我想起了迅雷的解決方法:把所有的非法字符替換成下劃線。

于是就引入了正則表達式的使用。一番搜索囫圇吞棗后,我寫下了這樣的函數:

代碼如下:
def sanitize_filename(filename):
return re.sub('[//:*?<>|]', '_', filename)

最近意識到了這個函數里的好多問題:

Python 和 Shell 不同,無論單引號還是雙引號,反斜杠都是轉義符。走狗屎運的是,Python 對于沒意義的轉義 // 的處理是保持原樣。 即便如此,sanitize_filename('///:*?<>|') 依舊返回 /_______ 而不是全部都是下劃線。

于是感覺得正正經經看看文檔了。

Raw strings

看了文檔后才意識到,Python 正則表達式模塊的轉義是獨立的。例如匹配一個反斜杠字符需要將參數寫成:'////':

Python 將字符串轉義://// 被轉義為 //
re 模塊獲得傳入的 // 將其解釋為正則表達式,按照正則表達式的轉義規則將其轉義為 /
如此麻煩的前提下,Raw String 就大有作為了,顧名思義就是(除了結尾的反斜杠)不會被轉義的字符串。于是匹配一個反斜杠字符就可以寫作 r'//'。

所以上面的 sanitize_filename 改成了:

代碼如下:
def sanitize_filename(filename):
return re.sub(r'[///:*?<>|]', '_', filename)

Regex 和 Match

于是正經看看 re 模塊吧~以下為流水帳,供急性子觀看。

Python 的正則表達式模塊 re 中主要的對象其實是這倆:

正則表達式 RegexObject
匹配 MatchObject
RegexObject 是正則表達式對象,所有 match sub 之類的操作都歸它所有。由 re.compile(pattern, flag) 生成。

代碼如下:
>>> email_pattern = re.compile(r'/w+@/w+/./w+')
>>> email_pattern.findall('My email is abc@def.com and his is user@example.com')
['abc@def.com', 'user@example.com']

其中的方法:

search 從任意字符開始匹配,返回 MatchObject 或者 None
match 從第一個字符開始匹配,返回 MatchObject 或者 None
split 返回由匹配分割的 List
findall 返回所有匹配的 List
finditr 返回 MatchObject 的迭代器
sub 返回替換后的字符串
subn 返回 (替換后的字符串, 替換次數)
re 模塊里提供的函數如 re.sub re.match re.findall 實際上都可以認為是一種省去直接創建正則表達式對象的捷徑。而由于 RegexObject 對象本身可以反復使用,這也是它相對于這些捷徑函數的優勢所在。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青草国产精品一区二区| 亚洲国产高潮在线观看| 欧美精品久久久久a| 国内揄拍国内精品少妇国语| 国产精欧美一区二区三区| 国产自产女人91一区在线观看| 亚洲精品久久久久久久久久久久| 97精品一区二区视频在线观看| 免费91麻豆精品国产自产在线观看| 国产精品久久久久久久久久久新郎| 国产欧美婷婷中文| 国语自产精品视频在线看| 高清日韩电视剧大全免费播放在线观看| 日韩免费观看网站| 亚洲精品一区中文| 最新国产成人av网站网址麻豆| 日韩免费av一区二区| 欧美激情国产日韩精品一区18| 日韩有码在线电影| 亚洲欧美日韩在线一区| 日韩禁在线播放| 最新中文字幕亚洲| 国产亚洲精品va在线观看| 日韩电影免费在线观看中文字幕| 九九综合九九综合| 国语自产偷拍精品视频偷| 亚洲成**性毛茸茸| 久久亚洲电影天堂| 亚洲午夜色婷婷在线| 国产精品久久久久久久久久ktv| 91亚洲国产成人久久精品网站| 精品国产乱码久久久久久虫虫漫画| 中文字幕一区二区三区电影| 欧美—级高清免费播放| 久久精品国产99国产精品澳门| 国产精品99蜜臀久久不卡二区| 色av吧综合网| 国产精品国产三级国产aⅴ浪潮| 国语自产精品视频在免费| 欧美专区在线观看| 亚洲欧美国产精品专区久久| 久久在线精品视频| 中文字幕日韩av电影| 国产精品欧美风情| 最近2019中文字幕在线高清| 国产一区二区三区中文| 欧美日韩中文字幕在线| 久久久久久久激情视频| xxx一区二区| 亚洲精品一区二区三区不| 欧美在线不卡区| 成人欧美一区二区三区黑人| 成人免费视频xnxx.com| 亚洲视频一区二区| 成人免费网站在线| 久久久久久久久久久久久久久久久久av| 91国语精品自产拍在线观看性色| 亚洲第一国产精品| 国产欧美va欧美va香蕉在线| 亚洲加勒比久久88色综合| 久久久久久久久久亚洲| 午夜精品一区二区三区视频免费看| 欧美激情二区三区| 成人在线视频福利| 欧美韩国理论所午夜片917电影| 日韩经典第一页| 一区二区三区视频观看| 在线视频中文亚洲| 久久综合国产精品台湾中文娱乐网| 久久精品国产69国产精品亚洲| 欧美又大粗又爽又黄大片视频| 亚洲国产精品久久久久秋霞蜜臀| 亚洲天堂日韩电影| 亚洲欧美日韩中文在线制服| 国产精品观看在线亚洲人成网| 97国产精品免费视频| 日韩亚洲欧美中文高清在线| 一本色道久久88综合日韩精品| 国产精品电影网站| 在线播放日韩专区| 亚洲男人的天堂在线| 日韩精品久久久久久福利| 欧美激情在线狂野欧美精品| 国产午夜精品一区理论片飘花| 欧美极品少妇与黑人| 日韩欧美国产视频| 欧美日韩激情小视频| 国产成+人+综合+亚洲欧洲| 亚洲精品一区在线观看香蕉| 国产精品成人aaaaa网站| 日韩中文字幕网站| 欧美成人午夜视频| 亚洲男人第一av网站| 国产成人激情小视频| 亚洲黄色av女优在线观看| 激情亚洲一区二区三区四区| 亚洲国产高清福利视频| 国产一区二区三区在线免费观看| 亚洲性视频网站| 亚洲成人亚洲激情| 97精品国产aⅴ7777| 久久精品国产综合| 亚洲老头老太hd| 九九热这里只有精品6| 97精品国产aⅴ7777| 亚洲人成亚洲人成在线观看| 2019中文字幕在线观看| 在线国产精品播放| www.日韩不卡电影av| 亚洲tv在线观看| 波霸ol色综合久久| 日韩欧美在线免费| 精品国产视频在线| 亚洲丝袜av一区| 久久99视频免费| 精品露脸国产偷人在视频| 亚洲色图第一页| 欧美性20hd另类| 日韩欧美在线第一页| 国产性猛交xxxx免费看久久| 午夜精品久久久久久99热软件| 38少妇精品导航| 尤物yw午夜国产精品视频| 精品伊人久久97| 在线精品高清中文字幕| 成人深夜直播免费观看| 久久电影一区二区| 欧美激情综合色| 亚洲女同精品视频| 久久伊人精品一区二区三区| 欧美午夜xxx| 国产精品精品久久久久久| 欧美大尺度激情区在线播放| 亚洲午夜色婷婷在线| 亚洲视频在线观看网站| 亚洲精品视频在线观看视频| www.亚洲人.com| 国产va免费精品高清在线| 亚洲r级在线观看| 国产精品自产拍在线观看| 国产精品网站大全| 亚洲第一视频网| 日本韩国欧美精品大片卡二| 亚洲美女精品久久| 国产精品丝袜白浆摸在线| 在线精品国产欧美| 欧美性高跟鞋xxxxhd| 精品久久久久久中文字幕一区奶水| 久久国产精品久久久久久久久久| 国产精品夜间视频香蕉| 亚洲欧美成人网| 狠狠操狠狠色综合网| 高清一区二区三区四区五区| 亚洲成年人在线| 热久久这里只有精品| 国产99久久久欧美黑人| 成人淫片在线看| 日韩www在线| 国产精品成人久久久久| 欧美激情一区二区三级高清视频| 国产裸体写真av一区二区| 国产午夜精品免费一区二区三区| 亚洲美女视频网站| 成人黄色av网|