環境設定
プログラム作成
正規表現
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 まで分割が発生し,残りの文字列がリストの最後の要素になります. |
ページ作成情報
参考資料
更新履歴
|