[Python] 文字列の検索方法。find、re.findall、re.search、inの使い方を紹介

Pythonの文字列検索方法について解説したいと思います。

一般的なfindメソッドから正規表現で文字列するre.searchメソッドのやり方を解説します。

目次

find/rfindメソッドで文字列検索

Pythonでは文字列を検索するのに一般的な方法は、find/rfindメソッドが提供されています。

使用方法は

文字列.find(検索文字,開始位置,終了行) 

になります。

戻り値は検索対象文字列の開始位置となります。

サンプルは以下のようになります。

str1='I like apple'
print(str1.find('apple'))
# 7

使用方法は 文字列.rfind(検索文字,開始位置,終了行) になります。

以下がサンプルになります。

str1='sky air airplane'
print(str1.rfind('air'))
# 8

参考:組み込み型find

参考:組み込み型rfind

正規表現re.searchを使って検索

正規表現操作用のreライブラリを利用した文字列検索も可能です。

re.search(検索対象,文字列)

で利用できます。 戻り値は、検索結果オブジェクトを返します。

以下がサンプルになります。

import re

str1='I like apple'
print(re.search('apple',str1))
# <re.Match object; span=(7, 12), match='apple'>
print(re.search('banana',str1))
# None

ですが、上記の例だと少々使いづらい場合もあります。 その他として以下の使い方も可能です。

import re

str1='I like apple'
print(re.search('apple',str1).group())
# apple
print(re.search('apple',str1).start())
# 7
print(re.search('apple',str1).span())
# (7, 12)
print(re.search('apple',str1).end())
# 12

参考:正規表現操作re.search

re.findall/re.finditer()を使って検索しリスト型を取得

正規表現操作用のreライブラリを利用した文字列検索でfindallやfinditerメソッドも一般的です。 findallの使い方は

re.findall(検索対象,文字列) 

になります。 戻り値は、リスト型データを返します。

以下がサンプルになります。

import re

str1='I like apple,banana,pineapple'
print(re.findall('apple',str1))
# ['apple', 'apple']

findallの使い方はre.finditer(検索対象,文字列) になります。

戻り値は、検索対象文字の開始位置と終了位置を返します。

以下がサンプルになります。

import re

str1='I like apple,banana and orange'

#全てのスタートインデックスの獲得
print([cnt.start() for cnt in re.finditer('apple|orange',str1)])
# [7, 24]

#全てのスタートインデックスと終了インデックスを獲得
print([tmp.span() for tmp in re.finditer('apple|orange',str1)])
# [(7, 12), (24, 30)]

#全ての終了インデックスを獲得
print([lmp.end() for lmp in re.finditer('apple|orange',str1)])
# [12, 30]

参考:正規表現操作re.findall

参考:正規表現操作re.finditer

in(所属検査演算)を使って文字列の存在確認

Pythonでは文字列を検索する時の存在確認にin (所属検査演算子)も利用できます。

戻り値は検索対象文字列の存在すればTrue、しなければFalseになります。

サンプルは以下のようになります。

str1='I like apple'

str2='apple'
str3='Apple'

print(str2 in str1)
# True
print(str3 in str1)
# False

参考:所属検査演算

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次