正規表現
30分プログラム、その46。Pythonで正規表現を使ってみよう。
今回、作ったのは正規表現でパスのディレクトリ部分、ファイル名の部分、拡張子の部分を取り出すプログラム。
$ python regexp.py ~/foo.txt direname: /Users/mzp basename: foo.txt ext: txt
import sys import re def basename(path): regexp = re.compile(r'^.*/') return regexp.sub('',path) def dirname(path): regexp = re.compile(r'(.*)/.*?$') o=regexp.match(path) if o != None: return o.group(1) def ext(path): regexp = re.compile(r'.*\.(?P<ext>.*?)$') o=regexp.match(path) if o != None: return o.groupdict()['ext'] path = sys.argv[1] print "direname: %s" % dirname(path) print "basename: %s" % basename(path) print "ext: %s" % ext(path)
- 上から順に、文字列の置き代え、グループのキャプチャ、名前付きグループでやっているのは勉強のため
- やっぱり正規表現は組み込みの記法を用意するべきだと思う