<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國際加速解決方案。 廣告
                ### 執行匹配 一旦你有了已經編譯了的正則表達式的對象,你要用它做什么呢?`RegexObject` 實例有一些方法和屬性。這里只顯示了最重要的幾個,如果要看完整的列表請查閱 Python Library Reference | 方法/屬性 | 作用 | | --- | --- | | match() | 決定 RE 是否在字符串剛開始的位置匹配 | | search() | 掃描字符串,找到這個 RE 匹配的位置 | | findall() | 找到 RE 匹配的所有子串,并把它們作為一個列表返回 | | finditer() | 找到 RE 匹配的所有子串,并把它們作為一個迭代器返回 | 如果沒有匹配到的話,match() 和 search() 將返回 None。如果成功的話,就會返回一個 `MatchObject` 實例,其中有這次匹配的信息:它是從哪里開始和結束,它所匹配的子串等等。 你可以用采用人機對話并用 re 模塊實驗的方式來學習它。如果你有 Tkinter 的話,你也許可以考慮參考一下 Tools/scripts/redemo.py,一個包含在 Python 發行版里的示范程序。 首先,運行 Python 解釋器,導入 re 模塊并編譯一個 RE: ``` #!python Python 2.2.2 (#1, Feb 10 2003, 12:57:01) >>> import re >>> p = re.compile('[a-z]+') >>> p <_sre.SRE_Pattern object at 80c3c28> ``` 現在,你可以試著用 RE 的 [a-z]+ 去匹配不同的字符串。一個空字符串將根本不能匹配,因為 + 的意思是 “一個或更多的重復次數”。 在這種情況下 match() 將返回 None,因為它使解釋器沒有輸出。你可以明確地打印出 match() 的結果來弄清這一點。 ``` #!python >>> p.match("") >>> print p.match("") None ``` 現在,讓我們試著用它來匹配一個字符串,如 "tempo"。這時,match() 將返回一個 MatchObject。因此你可以將結果保存在變量里以便後面使用。 ``` #!python >>> m = p.match( 'tempo') >>> print m <_sre.SRE_Match object at 80c4f68> ``` 現在你可以查詢 `MatchObject` 關于匹配字符串的相關信息了。MatchObject 實例也有幾個方法和屬性;最重要的那些如下所示: | 方法/屬性 | 作用 | | --- | --- | | group() | 返回被 RE 匹配的字符串 | | start() | 返回匹配開始的位置 | | end() | 返回匹配結束的位置 | | span() | 返回一個元組包含匹配 (開始,結束) 的位置 | 試試這些方法不久就會清楚它們的作用了: ``` #!python >>> m.group() 'tempo' >>> m.start(), m.end() (0, 5) >>> m.span() (0, 5) ``` group() 返回 RE 匹配的子串。start() 和 end() 返回匹配開始和結束時的索引。span() 則用單個元組把開始和結束時的索引一起返回。因為匹配方法檢查到如果 RE 在字符串開始處開始匹配,那么 start() 將總是為零。然而, `RegexObject` 實例的 search 方法掃描下面的字符串的話,在這種情況下,匹配開始的位置就也許不是零了。 ``` #!python >>> print p.match('::: message') None >>> m = p.search('::: message')?; print m <re.MatchObject instance at 80c9650> >>> m.group() 'message' >>> m.span() (4, 11) ``` 在實際程序中,最常見的作法是將 `MatchObject` 保存在一個變量里,然後檢查它是否為 None,通常如下所示: ``` #!python p = re.compile( ... ) m = p.match( 'string goes here' ) if m: print 'Match found: ', m.group() else: print 'No match' ``` 兩個 `RegexObject` 方法返回所有匹配模式的子串。findall()返回一個匹配字符串行表: ``` #!python >>> p = re.compile('\d+') >>> p.findall('12 drummers drumming, 11 pipers piping, 10 lords a-leaping') ['12', '11', '10'] ``` findall() 在它返回結果時不得不創建一個列表。在 Python 2.2中,也可以用 finditer() 方法。 ``` #!python >>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...') >>> iterator <callable-iterator object at 0x401833ac> >>> for match in iterator: ... print match.span() ... (0, 2) (22, 24) (29, 31) ```
                  <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>

                              哎呀哎呀视频在线观看