Yamamoto's Laboratory
 
環境設定
 
プログラム作成
  書き方
 
正規表現
 
 
 
tkinter
 
 
 
 
 
 

Python正規表現 (regular expression)

SciPy モジュールを使った補間 (interpolate) の方法を示します.

目次


はじめに

数値の処理に比べて,文字列の処理は格段に複雑です.文字列を取り扱いやすくするためには,その形式を表現する方法が必要です.正規表現(regular expression)は文字列の形式を表します.ここでは,正規表現とそれを使った処理を示します.

正規表現

文字列の処理では,対象となる文字列のパターンが重要です.特定の文字が含まれるか含まれないか,任意の文字並びが含まれるか,特定の文字の後にある文字列が含まれるか — 等です.さまざまな文字列のパターンが考えられ,それらについて処理を行わなくてはなりません.その文字列のパターンは正規表現で表すことができます.

パターン

ある任意の文字列と正規表現で表された文字列パターンとを比較することができます.それをパターンマッチと言います.以下の表にパターンマッチに使われる正規表現を示します.

パターンマッチに使われる正規表現
正規表現 文字列パターン
[abcXYZ] a,b,c,X,Y,Zのどれかひとつ
[a-z] a〜zのどれかひとつ
[C-W5-7] C〜W,あるいは5〜7のどれかひとつ
[^ab] 'a'と'b'以外にマッチ.ブラケット直後の ^ は否定
hoge | fuga hoge あるいは fuga のいずれか
. 改行文字(\n)以外の任意の1文字
\s\S \s は空白文字*1にマッチ.\Sはその否定.
\d\D \d は0〜9の数字にマッチ([0-9]と同じ).\D はその否定.
\w\W 英文字と英数字([a-zA-Z0-9])]にマッチ.\W はその否定.
* 直前の文字がゼロ個以上
+ 直前の文字が1個以上
? 直前の文字が0個または1個
{3,8} 直前の文字が3個以上,8個以下.できるだけ多くのものにマッチ.
{6} 直前の文字が6個
{7,} 直前の文字が7個以上
(パターン) 「\整数」で括弧内の文字列を参照できる*2
\b\B \b は単語境界,\B は単語境界ではない.
^ 直後が文字列の先頭
$ 直前が文字列の末尾
  • *1 空白文字とは,「スペース,CR, Tab, LF, 改ページ」のこと.
  • *2 /xx(.)yy([a-z])zz\2\1/は,「xx9yyazza9や「xxByykzzkB」にマッチする.\1は最初の括弧内の . に対応した文字列(ここでは文字),\2は次の括弧内の文字列になる.

注意事項

  • 制御に使われる文字を正規表現内で文字として使う場合には,エスケープ(文字の前に\をつける)しなくてはなりません.このような文字は,「\」や「*」,「+」,「.」,「?」,「{」と「}」,「(」と「)」,「[」と「]」,「^」,「|」,「\」です.また,「-」は角括弧[ ]内に書くときのみエスケープします.
  • 優先順位  演算子の優先順は,(1)括弧「()」,(2)繰り返しを表す「*,+,?,{3,8}」,(3)並び,位置指定,(4)または「|」です.このページに詳しく書いてある.

オペレーター

オブジェクト

Python 正規表現 (re) のオブジェクト
オブジェクト 内容
re.compile(pattern, flags=0) 正規表現パターンをオブジェクトにコンパイル.match() と search()メソッドが高速になります.or演算子 (|) を使うと,複数のフラク(flags)を指定できます.
re.search(pattern, string, flags=0) 一致する場合には文字列のインスタンス,一致しない場合には None を返す.
re.match(pattern, string, flags=0) search は文字列の任意の場所の検索に対して,match 文字列の先頭の検索です.一致する場合には文字列のインスタンス,一致しない場合には None を返す.
re.split(pattern, string, maxsplit=0, flags=0) 文字列をパターンので分割し,リストで返します.(pattern)とすると,パターン文字列も結果リストの一部として返されます.maxsplit がゼロでない場合,先頭から maxsplit まで分割が発生し,残りの文字列がリストの最後の要素になります.

ページ作成情報

参考資料

  1. マニュアル「正規表現 HOWTO」.

更新履歴

2017年08月11日 新規作成


no counter