職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

Python正規表現--パターンマッチ

2021年01月23日 | Python
文字列の先頭位置からパターンとマッチするか調べる

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【match メソッド】
search メソッド→対象の文字列のいずれかの場所でパターンとマッチするかどうかを調べる。
match メソッド→対象の文字列の先頭位置でパターンとマッチするかどうかを調べる。

・matchメソッドの書式
Pattern.match(string[, pos[, endpos]])
1 番目の引数に対象の文字列。
2 番目と 3 番目の省略可能な引数には、対象の文字列の中でマッチするかどうかをチェックする範囲を指定する。

サンプルコード
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import re
>>> def checkMatch(msg, pat):
pattern = re.compile(pat)
result = pattern.match(msg)
if result :
print(result.group(0))
else :
print('Don\'t matched')

>>> checkMatch('東京都港区赤坂', r'東京.')
東京都
>>> checkMatch('東京都港区赤坂', r'港.')←先頭じゃない
Don't matched
>>>

【チェックする範囲を設定する】
match メソッドの 2 番目と 3 番目の引数を指定することで、対象の文字列の中のチェックする範囲を設定する事が出来る。

例えば、
文字列を '東京都港区赤坂' にし、 2 番目と 3 番目の引数を省略した場合
対象は '東京都港区赤坂' になる。
しかし、2 番目の引数に 3 、 3番目の引数に 6 を指定した場合
対象は、'港区赤'になる

サンプルコード
>>> import re
>>> def checkMatch(msg, pattern, start, end):
result = pattern.match(msg, start, end)
if result :
print(result.group(0))
else :
print('Don\'t matched')

>>> msg = '東京都港区赤坂'
>>> pattern = re.compile(r'港区')
>>> checkMatch(msg, pattern, 0, 7)
Don't matched
>>> checkMatch(msg, pattern, 3, 7)
港区
>>>


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする