目的
Python3 で正規表現を使うときの備忘録とする
環境
- Jupyter Notebook
- Python3.6
参考
Python3.6 の公式ドキュメント
6.2. re — 正規表現操作 — Python 3.6.3 ドキュメント
ciscoconfparse
方針
re.compile
を使う
コード
import re # 標準ライブラリの re モジュールのインポート # サンプルテキストの作成 text = """! interface GigabitEthernet0/0/0/1 description *** foo bar *** ip address 10.0.0.1 255.255.255.0 switchport foo pen pineapple apple ! interface GigabitEthernet0/0/0/2 description *** baz *** ip address 172.16.1.1 255.255.255.0 switchport foo pen pineapple apple ! """ # マルチラインと、ドットオールを使う。 # フラグを指定することで利用できる。 # (?P<desc>... とすることで desc で呼べるようにしている。 p = re.compile('^(?P<desc>[^!]*{}.*?)!'.format("baz"), flags=(re.MULTILINE | re.DOTALL)) m = p.search(text) print(m.group('desc')) # OUTPUT #interface GigabitEthernet0/0/0/2 # description *** baz *** # ip address 172.16.1.1 255.255.255.0 # switchport foo # pen # pineapple # apple #!
後書き
もしかしたら、 re.DOTALL
は必要なかったかも知れない。テキストが長くなっても抜き出したい部分をちゃんと抜き出せるようになりたい。