『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

任意の1文字にマッチする正規表現

任意の1文字にマッチする正規表現

.任意の1文字にマッチするメタ文字です。たとえば は.を飼って という正規表現は、
 
・次郎君は犬を飼っている。
・小春ちゃんは猫を飼っています。
・私は鼠を飼っていません。
 
などの文字列にマッチしますが、
 
・次郎君はイヌを飼っています。
・私はサルを飼ってみたい。
 
のような文字列とはマッチしません。

#  PYTHON_REGEX_ANY_WORD

# In[1]

import re

# 正規表現オブジェクトを作成
regex = re.compile(r'は.を飼って')

# 検索対象となる文字列を作成
sentence_1 = "ええ、そうなんです。\n\
私は犬を飼っていますが、最近太り気味で心配なんです。\n\
それで、一昨日、動物病院に連れて行ったんですよ。\n\
そしたらまあ、案の定というか、先生から「エサの与え過ぎです」と注意されました。"

sentence_2 = "小春はネコを飼ってるよ~。\n\
名前は「うななん子たん」て言うんだ~。\n\
なに~? 変な名前だと~?\n\
そんなことないもん。かわいい名前だもん。"

# sentence_1を検索
f1 = regex.search(sentence_1)

# sentence_2を検索
f2 = regex.search(sentence_2)

print(f1)
print(f2)
# <_sre.SRE_Match object; span=(13, 19), match='は犬を飼って'>
# None

sentence_1 からは は犬を飼って という文字列が検索にかかりました。sentence_2 にはパターンにマッチする文字列はないので、None が返されます。
 
とすれば3文字を表します。
たとえば は…を飼って というパターンは
 
・あの人 はネズミを飼って いる。
・香織ちゃん はトカゲを飼って いるらしい。
 
という文字列にマッチします。

# In[2]

# 正規表現オブジェクトを作成
regex = re.compile(r'は...を飼って')

# 検索対象となる文字列を作成
sentence = "「ねえねえ、瞳ちゃん、知ってる? 香織ちゃんはトカゲを飼ってるって噂だよ」\n\
「それはあくまで噂でしょう?」\n\
「噂かもしれないけど、きっと本当だよ」\n\
「噂であることを認めながら、本当だと断言するのは矛盾しているわ」\n\
「・・・・・・」\n\
「彼女はトカゲを飼っているかもしれないし、飼っていないかもしれない。\n\
あるいはネズミを飼っているかもしれないし、何も飼っていないかもしれない。\n\
本人に直接訊いて事実を確認しない限り、何も確かなことは言えないわ」\n\
「・・・・・・ひとつだけ確かなことは、瞳ちゃんとは噂話をしないほうがいいってことだよ」"

# sentenceを検索してパターンに適合した文字列を取得
f = regex.findall(sentence)

print(f)
# ['はトカゲを飼って', 'はトカゲを飼って', 'はネズミを飼って']

コメント