re.split での出力結果に空の文字列が含まれるのはなぜ？


Pythonの正規表現を使い、以下の分割を行いました。

**実行したコード**

[code]

    street_address = '東京都港区六本木6-10-1'
    
    pat =  '(東京都|北海道|京都府|大阪府|[青森田岩手宮城秋山形福島茨栃木群馬埼玉千葉神奈川
    新潟富石井梨長野岐阜静岡愛知三重滋賀兵庫良和歌鳥取根広口徳香媛高佐崎熊本大分鹿児沖縄]
    {2,3}県)((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|
    十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下>松|岩国|田川|大村|
    宮古|富良野|別府|佐伯|黒部|小諸|塩尻|玉野|周南)市|(?:余市|高市|[^市]{2,3}?)郡
    (?:玉村|大町|.{1,5}?)[町村]|(?:.{1,4}市)?[^町]{1,4}?区|.{1,7}?[市町村])
    (.+)'#1,都道府県 2,市区町村 3,町域以下にマッチする正規表現
    
    street_address_li = re.split(pat, street_address)
    street_address_li
    
[/code]

**出力結果**

[code]

    ['', '東京都', '港区', '六本木6-10-1', '']
    
[/code]

### 質問

結果の前後になぜ `''` が入ってしまうのでしょうか？  
わかる方いらっしゃればご教示願います。  
※業務に支障はないのですが、理屈を知りたいという感じです。




<https://docs.python.org/ja/3/library/re.html#re.split>

> セパレータ中にキャプチャグループがあり、それが文字列の先頭にマッチするなら、結果は空文字列で始まります。同じことが文字列の末尾にも言えます。

メソッドの説明に書いてあるとおりです。

[code]

    >>> re.split('(a|b)',  'cac')
    ['c', 'a', 'c']
    
    
    >>> re.split('(a|c)',  'cac')
    ['', 'c', '', 'a', '', 'c', '']
    
[/code]

この差を考えればいいでしょう。




<https://docs.python.org/ja/3/library/re.html#re.split>

> セパレータ中にキャプチャグループがあり、それが文字列の先頭にマッチするなら、結果は空文字列で始まります。同じことが文字列の末尾にも言えます。

メソッドの説明に書いてあるとおりです。

[code]

    >>> re.split('(a|b)',  'cac')
    ['c', 'a', 'c']
    
    
    >>> re.split('(a|c)',  'cac')
    ['', 'c', '', 'a', '', 'c', '']
    
[/code]

この差を考えればいいでしょう。

