<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 7.5.?松散正則表達式 迄今為止,你只是處理過被我稱之為“緊湊”類型的正則表達式。正如你曾看到的,它們難以閱讀,即使你清楚正則表達式的含義,你也不能保證六個月以后你還能理解它。你真正所需的就是利用內聯文檔 (inline documentation)。 Python 允許用戶利用所謂的_松散正則表達式_ 來完成這個任務。一個松散正則表達式和一個緊湊正則表達式主要區別表現在兩個方面: * 忽略空白符。空格符,制表符,回車符不匹配它們自身,它們根本不參與匹配。(如果你想在松散正則表達式中匹配一個空格符,你必須在它前面添加一個反斜線符號對它進行轉義。) * 忽略注釋。在松散正則表達式中的注釋和在普通 Python 代碼中的一樣:開始于一個`#`符號,結束于行尾。這種情況下,采用在一個多行字符串中注釋,而不是在源代碼中注釋,它們以相同的方式工作。 用一個例子可以解釋得更清楚。讓我們重新來看前面的緊湊正則表達式,利用松散正則表達式重新表達。下面的例子顯示實現方法。 ## 例?7.9.?帶有內聯注釋 (Inline Comments) 的正則表達式 ``` >>> pattern = """ ^ # beginning of string M{0,3} # thousands - 0 to 3 M's (CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's), # or 500-800 (D, followed by 0 to 3 C's) (XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's), # or 50-80 (L, followed by 0 to 3 X's) (IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's), # or 5-8 (V, followed by 0 to 3 I's) $ # end of string """ >>> re.search(pattern, 'M', re.VERBOSE) <_sre.SRE_Match object at 0x008EEB48> >>> re.search(pattern, 'MCMLXXXIX', re.VERBOSE) <_sre.SRE_Match object at 0x008EEB48> >>> re.search(pattern, 'MMMDCCCLXXXVIII', re.VERBOSE) <_sre.SRE_Match object at 0x008EEB48> >>> re.search(pattern, 'M') ``` | | | | --- | --- | | \[1\] | 當使用松散正則表達式時,最重要的一件事情就是:必須傳遞一個額外的參數 `re.VERBOSE`,該參數是定義在 `re` 模塊中的一個常量,標志著待匹配的正則表達式是一個松散正則表達式。正如你看到的,這個模式中,有很多空格 (所有的空格都被忽略),和幾個注釋 (所有的注釋也被忽略)。如果忽略所有的空格和注釋,它就和[前面章節](n_m_syntax.html "7.4.?使用 {n,m} 語法")里的正則表達式完全相同,但是具有更好的可讀性。 | | \[2\] | 這個模式匹配字符串的開始,接著匹配三個可選 `M` 字符中的一個,接著匹配 `CM`,接著是字符 `L` 和三個可選 `X` 字符的所有字符,接著是 `IX`,然后是字符串的結尾。 | | \[3\] | 這個模式匹配字符串的開始,接著是三個可選的 `M` 字符的所有字符,接著匹配 `D?C{0,3}`,此處為一個字符 `D` 和三個可選 `C` 字符中所有字符,接著匹配 `L?X{0,3}`,此處為一個 `L` 字符和三個可選 `X` 字符中所有字符,接著匹配 `V?I{0,3}`,此處為一個字符 `V` 和三個可選 `I` 字符中所有字符,接著匹配字符串的結尾。 | | \[4\] | 這個沒有匹配。為什么呢?因為沒有 `re.VERBOSE` 標記,所以 `re.search` 函數把模式作為一個緊湊正則表達式進行匹配。Python 不能自動檢測一個正則表達式是為松散類型還是緊湊類型。Python 默認每一個正則表達式都是緊湊類型的,除非你顯式地標明一個正則表達式為松散類型。 |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看