Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

和文/日本語にマッチする正規表現 #1

Open
azu opened this issue Oct 6, 2015 · 8 comments
Open

和文/日本語にマッチする正規表現 #1

azu opened this issue Oct 6, 2015 · 8 comments

Comments

@azu
Copy link
Member

azu commented Oct 6, 2015

[亜-熙ぁ-んァ-ヶ] はイマイチ

@azu
Copy link
Member Author

azu commented Oct 6, 2015

@azu
Copy link
Member Author

azu commented Oct 6, 2015

@azu
Copy link
Member Author

azu commented Oct 6, 2015

([\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]|[ぁ-んァ-ヶ])を使う

@azu
Copy link
Member Author

azu commented Oct 6, 2015

でいいのかな

@mashabow
Copy link

「和文」「日本語」が何を指すのかにもよりますが、Unicode Script Property の Hiragana, Katakana, Han (Hira, Kana, Hani) をベースにしてはどうでしょうか。

ちなみに ES6 の \u{...} リテラルと u フラグを使えば、厄介なサロゲートペアを回避でき、正規表現が少しすっきりします。

@monokano
Copy link

Unicodeで「漢字」の正規表現
ここにJavaScript版もあります。

「日本語の漢字の正規表現」は、Unicodeは漢字統合されているので無理ですね。

漢字以外の日本語は、mashabowさんの仰るようにUnicode Script Propertyを利用するのが良い方法だと思います。記号も含まれていますし。→ Katakanaの例


上記コメントがトンチンカンでしたので、改めて。

そもそもUnicodeには「スクリプト」の区分けはあっても「言語」の区分けがありません。この2つは同じようでまったく異なります。例えば、全角アルファベットのスクリプトは「Latin」です。

「日本語の文字の正規表現」は、Unicodeではあまりに遠大なことになる(しかも「日本語の漢字」の判定は決して確実さには到らない)ので、実質的に不可能なんだと思います。

@azu
Copy link
Member Author

azu commented Oct 21, 2015

@mashabow @monokano ありがとうございます。

JTFスタイルガイドで「和文」の定義が曖昧なのですが、
例えば、

1.2.1. 句点(。)と読点(、)
句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。

みたいな感じのルールを実現するのに、「和文.」となっていたらエラーというの検出したくて、「和文/日本語にマッチする正規表現」が必要になった感じですね。

この場合の「和文」は大体IMEで日本語入力出来る範囲みたいな感じで考えるのが妥当かなと思います。
日常的に使わない記号はやや特殊なものだと考えて正規表現の範囲に含めなくても、この場合は マッチしない = エラーにならない だけなので、省いてしまってもいいかなと考えてました。

「日本語の文字の正規表現」は、Unicodeではあまりに遠大なことになる(しかも「日本語の漢字」の判定は決して確実さには到らない)ので、実質的に不可能なんだと思います。

なるほどです。

@monokano
Copy link

「和文=欧文の正規表現にマッチしない」で、実用上問題ないかもしれません。欧文の正規表現も大雑把で済むような気がします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants