正規表現の覚書
Pythonの re モジュールを使って、文字列のsplit関数と同じような処理をさせる
方法の覚書です。
たとえば、
'01234 aaaa b1c2d4 "aaa/bbb ccc/dddd/eeee"'
を半角スペースの位置で分割したいのですが、ダブルクォートで囲まれた部分は
半角スペースがあっても分割したくない場合、split関数ではうまくいきませんよね。(そうですよね!?)
で、re モジュールを使って以下のようにしたところ、うまい具合に分割できました。
import re s = '01234 aaaa b1c2d4 "aaa/bbb ccc/dddd/eeee"' expr = re.compile(r'\"[^\"]*\"|[^\s]+') tokenList = expr.findall(s)
r'\"[^\"]*\"|[^\s]+'
は、「ダブルクォートで囲まれている文字列または、空白でない1文字以上の文字列」
という意図で。
上記のtokenListの内容は
['01234', 'aaaa', 'b1c2d4', '"aaa/bbb ccc/dddd/eeee"']
となります。
今日もいい勉強になりました。