PythonRegex教程之一:基礎篇,pythonRegex

來源:互聯網
上載者:User

PythonRegex教程之一:基礎篇,pythonRegex

前言

之前有人提了一個需求,我一看此需求用Regex最合適不過。考慮到之前每次使用Regex,都是臨時抱佛腳,於是這次我就一邊完成任務一邊系統的學習了一遍Regex。主要參考PyCon2016上的一個視頻Regular Expressions。

我將分幾篇文章對Regex進行總結。

以下是第一部分,基礎: 

基礎部分

這裡總結了Regex最基礎的用法,其中大部分內容對我(以及大部分程式員)來說都是平時經常用到的,所以我就一筆帶過了,只對其中的幾處用例子說明。 

     .           除了換行之外的其他所有字元

     ^           行首

     $           行尾

     [abcd]      abcd其中的一個字元

     [^abcd]     除了abcd之外的任一字元

     [a-d]       相當於[abcd]

     [a-dz]      相當於[abcdz]

     \b          單詞邊界

     \w          字母數字或底線 相當於[a-zA-Z0-9_]

     \W          與\w相反

     \d          數字,相當於[0-9]

     \D          與\d相反

     \s          空白字元,相當於[ \t\n\r\f\v]

     \S          與\s相反

     {5}         在此之前的Regex部分(下同)準確的出現5次

     {2,5}       ~出現2到5次

     {2,}        ~出現2次或多次

     {,5}        ~出現0到5次

     *          ~出現0次或多次

     ?          ~出現0次或1次

     +           ~出現1次或多次

     ABC|DEF     匹配ABC或者DEF

     \          逸出字元,如\表示匹配*,\$表示匹配$* 

\b、 \用以下幾個例子簡單說明一下: 

     \b:

>>> re.search(r'\bhello\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello,world')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search(r'\bhello\b', 'hello_world') >>> 

其實這裡,\b大體上和\W一支,但是\b可以匹配行首行尾等非顯示類的字元,而\W不可以。 

     \:

>>> re.search(r'\$100', '$100')<_sre.SRE_Match object; span=(0, 4), match='$100'>>>> re.search(r'$100', '$100') >>> 

想要匹配那些在Regex中有特殊含義的字元,如$、^、*等,就需要用\進行轉義。 

raw string:

另外,前面例子中,模式字串(pattern)前面都加了一個r,這個r的意思是raw string,後面所接的字串,Pyhton解譯器無需對其進行轉義。因為,\在Python字串中和Regex中都有特殊含義,所以如果不是raw string,那麼要表達一個\字元,就需要四個\了(在Python解譯器中先轉義一次,2個\表示1個\,剩下2個\,在Regex中又轉義一次,最終剩下一個\)。例如:

>>> re.search(r'\bhello\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search('\bhello\b', 'hello') >>> re.search('\\bhello\\b', 'hello')<_sre.SRE_Match object; span=(0, 5), match='hello'>>>> re.search('\\\\hello\\\\', '\\hello\\') <_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>>>> re.search(r'\\hello\\', '\\hello\\') <_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>>>> print('\\hello\\')\hello\

總結

以上就是關於PythonRegex之基礎的全部內容了,有了這些知識,Regex的基本運用就沒什麼問題了。對於一些特殊情況,還需要掌握另外一些進階用法,敬請期待後續文章。希望本文的內容對大家的學習或者工作能帶來一定的協助,如果有疑問大家可以留言交流,如果有疑問大家可以留言交流。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.