LoginSignup
15
19

More than 3 years have passed since last update.

特定文字の間を取得するときの正規表現

Last updated at Posted at 2019-06-08

pinzu_1.png という文字列から
pinzu と
1 という文字列を抜き出したい時の
正規表現が難しかったのでメモ。
pythonで試していますが、正規表現なので他の言語でも
もちろん応用できるかと。

上手くいかないパターン

pinzu_1.pngとう文字列内の「pinzu」は、
先頭から「_」の間となります。
先頭を表す文字は「^」なので、マッチパターンは
'^.*_'
でいいかなーと思って動かしてみましたが結果は…

python.py
>>> import re
>>> re.search('^.*_', 'pinzu_1.png').group()
'pinzu_'

「_」まで入ってきちゃいました…。

上手くいくパターン

正規表現には「先読み」「後読み」というのがあります。
今回のパターンはそれを利用すると上手くできました!

表記 意味
(?=abc) 先読み
(?!abc) 否定先読み
(?<=abc) 後読み
(?<!abc) 否定後読み
python.py
>>> import re
>>> re.search('^.*(?=_)', 'pinzu_1.png').group()
'pinzu'

>>> re.search('(?<=_).*(?=\.)', 'pinzu_1.png').group()
'1'

やりたいこと通りにプログラムが動くと嬉しいですね!

参考)Pythonで正規表現を使ってみた

15
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
19