No.22886 【R】文字列のコード判定(ひらがな、漢字)  【明石】 2020/04/03(Fri) 16:11

青木先生 様;

お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。

青木先生にご教示いただきたいことが出てきました。
何卒どうぞよろしくお願いいたします。

----------------------------------------

3つの文字列があります。

x <- c("りんご","林檎","apple")

1番目の要素は,ひらがな のみ
2番目の要素は,漢字   のみ

どのようにしたら,
1番目の要素は,ひらがな のみ
2番目の要素は,漢字   のみ
という判定ができるのでしょうか。

お手数をおかけいたします。
何卒どうぞよろしくお願いいたします。

No.22887 Re: 【R】文字列のコード判定(ひらがな、漢字)  【青木繁伸】 2020/04/03(Fri) 18:21

Python での記事ですが,
https://note.nkmk.me/python-re-regex-character-type/
が参考になると思います。

R では以下のようになります。
HIRAGANA = "[\u3041-\u309F]" # ひらがなの正規表現
grepl(HIRAGANA, "あ") # TRUE
grepl(HIRAGANA, "ア") # FALSE

KATAKANA = "[\u30A0-\u30FF]" # カタカナの正規表現
grepl(KATAKANA, "ア") # TRUE
grepl(KATAKANA, "あ") # FALSE

# 簡易
KANJI0 = "[\u4E00-\u9FFF]" # 漢字の正規表現(簡易版)
grepl(KANJI0, "漢") # TRUE
grepl(KANJI0, "々") # FALSE
grepl(KANJI0, "〆") # FALSE
grepl(KANJI0, "〇") # FALSE

# 完全
KANJI = "[\u2E80-\u2FDF\u3005-\u3007\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\U00020000-\U0002EBEF]" # 漢字の正規表現(完全版)
grepl(KANJI, "漢") # TRUE
grepl(KANJI, "々") # TRUE
grepl(KANJI, "〆") # TRUE
grepl(KANJI, "〇") # TRUE

# 複数文字の場合,すべてがひらがな,カタカナ,漢字かどうかの判定
is.all.hiragana = function(s) {
t = grepl(HIRAGANA, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.katakana = function(s) {
t = grepl(KATAKANA, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.kanji = function(s) {
t = grepl(KANJI, strsplit(s, "")[[1]])
# print(t)
all(t)
}

is.all.hiragana("ひらがな")
is.all.hiragana("ひらがなイガイ")

is.all.katakana("カタカナ")
is.all.katakana("カタカナいがい")

is.all.kanji("漢字")
is.all.kanji("漢字いがい")

No.22888 御礼(Re: 【R】文字列のコード判定(ひらがな、漢字))  【明石】 2020/04/03(Fri) 19:58

青木先生 様;

お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。

今回も,ご丁寧で,分かりやすい,ご教示をいただき,誠にありがとうございました。

私はPythonも勉強し始めましたので,
青木先生がご紹介してくださいましたページも,あわせて,参照いたします。

いつもありがとうございます。
//

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る