任意の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)
# ['はトカゲを飼って', 'はトカゲを飼って', 'はネズミを飼って']

コメント