正規表現で取りうる値をすべて取得する方法

  • 50
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

やりたいこと

  • その正規表現が表している文字列をすべて取得したい
  • 具体的には、クローラを作る時にクローリング対象URLを正規表現で指定したい
  • ↓こんなかんじ

インプット

http://xxx/abc[x-z]/image(9|10|11).png

 取得したい値

http://xxx/abcx/image9.png
http://xxx/abcy/image9.png
http://xxx/abcz/image9.png
http://xxx/abcx/image10.png
http://xxx/abcy/image10.png
http://xxx/abcz/image10.png
http://xxx/abcx/image11.png
http://xxx/abcy/image11.png
http://xxx/abcz/image11.png

やり方

sample.py
import sre_yield

if __name__ == '__main__':
    regex = r'http://xxx/abc[x-z]/image(9|10|11)\.png'
    urllist = list(sre_yield.AllStrings(regex))
    print(urllist)
実行結果
['http://xxx/abcx/image9.png', 'http://xxx/abcy/image9.png', 'http://xxx/abcz/image9.png', 'http://xxx/abcx/image10.png', 'http://xxx/abcy/image10.png', 'http://xxx/abcz/image10.png', 'http://xxx/abcx/image11.png', 'http://xxx/abcy/image11.png', 'http://xxx/abcz/image11.png']
  • sre_yield最近StackOverFlowで教えてもらったライブラリです。
  • 正規表現を展開する方法、あまり需要がないのかネットで探してもなかなか辿りつけなかったのでまとめました。
  • それにしても、StackOverFlowに足を向けて寝れません