環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Python の正規表現で文字列がひらがなかどうか確かめる

Python の正規表現で文字列がひらがなかどうかを確かめるには、正規表現パッケージ rematch を使います。

import re

pattern = r'^[あ-ん]+$'

a = 'あいう'

if re.match(pattern, a):
    print('ひらがなしかありません')
else:
    print('ひらがな以外もあります')

# ひらがなしかありません

パターンにマッチすると matchMatch オブジェクトを返し、マッチしなかったときは 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

Python 正規表現