Python の正規表現で文字列がひらがなかどうか確かめる
2023.02.18
Python の正規表現で文字列がひらがなかどうかを確かめるには、正規表現パッケージ re
の match
を使います。
import re
pattern = r'^[あ-ん]+$'
a = 'あいう'
if re.match(pattern, a):
print('ひらがなしかありません')
else:
print('ひらがな以外もあります')
# ひらがなしかありません
パターンにマッチすると match
は Match
オブジェクトを返し、マッチしなかったときは None
を返します。
import re
pattern = r'^[あ-ん]+$'
a = 'あいう'
b = '愛う'
m = re.match(pattern, a)
n = re.match(pattern, b)
print(m) # <re.Match object; span=(0, 3), match='あいう'>
print(n) # None
ひらがな完全版
[あ-ん]
だと小さい「あ」の ぁ
などが漏れてしまう。ユニコードが定めるすべてのひらがなは
3041 ぁ
...
3096 ゖ
3099 ゙
...
309F ゟ
です。3097 と 3098 には文字がありません。そこでひらがなをチェックする正規表現は
import re
pattern = r'^[\u3041-\u3096\u3099-\u309F]+$'
a = 'あぁいゟゅいまてん゙'
b = 'う。'
m = re.match(pattern, a)
n = re.match(pattern, b)
print(m) # <re.Match object; span=(0, 10), match='あぁいゟゅいまてん゙'>
print(n) # None
となります。ひらがなの完全一致を調べる関数はこうなります。
import re
def is_hiragana(text: str):
pattern = r'^[\u3041-\u3096\u3099-\u309F]+$'
if re.match(pattern, text):
return True
return False
a = is_hiragana('あぁいゟゅいまてん゙')
b = is_hiragana('う。')
print(a) # True
print(b) # False