【逆引きPython】文字列などのパターンをマッチングする(正規表現)

Pythonでプログラムを書いていると、文字列などのパターンをマッチングさせたい事が良く出てきます。そんな時に便利なのが正規表現を使ったパターンマッチングです。

今回はPythonでの正規表現の使い方を解説します。

目次

文字列などのパターンをマッチング

先頭文字列に対するパターンマッチング

先頭文字列に対してパターンをマッチングする場合はmatch()関数を使います。

下の例はdata変数に入っている’abcdefg’の文字列の先頭が’abc’かどうかマッチングさせる時の例です。下の例ではマッチするのでm.group()関数の戻り値でマッチした文字列が呼び出されprint文で’abc’と画面に結果が表示されます。

import re

data = ‘abcdefg’
m = re.match(‘abc’, data)
if m:
print(‘match!!’)
print(m.group())
else:
print(‘Not match!!’)

この例でマッチさせたい文字列を’bcd’に変えるとマッチしなくなりNot Match!!と表示されます。

import re

data = ‘abcdefg’
m = re.match(‘bcd’, data)
if m:
print(‘match!!’)
print(m.group())
else:
print(‘Not match!!’)

どこの場所でもあってもとにかくパターンをマッチングする

最初の文字列では無く、文字列内の何処にあってもよいので任意のパターンの文字列とマッチするか確認したい場合、search()関数を使います。

コードは先程のコードのmatch()関数をsearch()関数に置き換えるだけでOKです。
これで先程の’abcdefg’文字列と’bcd’文字列がマッチするか調べると今度はマッチしたと判定されます。

import re

data = ‘abcdefg’
m = re.search(‘bcd’, data)
if m:
print(‘match!!’)
print(m.group())
else:
print(‘Not match!!’)

 先頭または末尾をマッチングする

search()関数でアンカーを使うと先頭または末尾のパターンのマッチングが簡単に出来ます。
アンカーとはパターンの位置を指定するメタ文字の事で、「^***」が文字列の先頭「***$」が文字列の末尾のマッチングしたい時に使います。(***はマッチさせたい任意の文字列)
文字列の先頭をマッチングさせたい時のコードは次の通りになります。

import re

data = ‘abcdefg’
m = re.search(‘^abc’, data)
if m:
print(‘match!!’)
print(m.group())
else:
print(‘Not match!!’)

文字列の末尾をマッチングさせたい時のコードは次の通りになります。

import re

data = ‘abcdefg’
m = re.search(‘efg$’, data)
if m:
print(‘match!!’)
print(m.group())
else:
print(‘Not match!!’)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (1件)

  • 1. ”文字列などのパターンをマッチング”
    せっかちな私には難解でした、
    次のような感じだと全体が一目でつかめるし繰り返しが省けて Python の精神に合致すると思います。

    #文字列 のマッチング
    mport re
    data = ‘abcdefg’
    m = re.match(‘abc’, data) #先頭
    m = re.search(‘bcd’, data) #どこかで一致
    m = re.search(‘^abc’, data) #先頭
    m = re.search(‘efg$’, data) #末尾
    if m:
    print(‘match!!’)
    print(m.group())
    else:
    print(‘Not match!!’)

    2. フォルダの中のファイル名を取得する
    “フォルダ” と言うより ”ディレクトリ” とか ”パス” と呼ぶべきかと…   

目次