Unicode文字列の単語境界を検索するJavascriptの正規表現

JavaScriptの正規表現(「xregexp」JSライブラリを使用する)を介して、日本語の文字列(例:「私はマートに行きました。」)で単語境界を見つける方法はありますか?

例えば。:

var xr = RegExp("\\bst","g");
xr.test("The string")//--> true

日本の弦には同じ論理が必要です。

4
私は理解できません。 \\ bst は何ですか?
追加された 著者 hippietrail,
漢字、ひらがな、カタカナの境界を一致させる方法は、この問題を解決するのには役立ちますが、それだけでは解決できません。これまでのところ、xregexpを使っても、それらを照合する方法を見つけることさえできません。私はちょうどそれについて尋ねた質問に興味があるかもしれません:>> stackoverflow.com/questions/16492933/…
追加された 著者 hippietrail,
日本語の場合、完全な形態素解析器を使う方が良いでしょう。 JavaScriptには次のようなものがあります: github.com/takuyaa/kuromoji.js
追加された 著者 katspaugh,

2 答え

しかし、日本語の文を単語に分離するという実際の問題は、英語のように単語がスペースに分割されていないため、表示されるよりも複雑です。

たとえば、私はマーケットに行きました。(「私は市場に行った」)という言葉は次のとおりです。

  • 私 - ワタクシ
  • はwa
  • マーケット - maaketto
  • に - ni
  • 行きました - いきました
  • 。 - (期間)

日本文の信頼できるパーサは、残りの単語を見つけるために、とりわけ、文中に粒子(waとni)がどこにあるのかを見つけなければなりません。

6
追加された
はい、これは本当に難しいです。あなたは単語の大きな辞書を持っていなければなりません。そして、一連の文字(特に仮名)が使われるときにどんな言葉が意味されそうかを推測するヒューリスティックです。あなたは文章を複数の方法で読むことができる場所で言葉遣いをすることができるので、最終的には仕事は完全には解決できません。また、ツールを使って鈍い正規表現(JavaScriptのUnicode-ignorant regexpsは気にしないでください)
追加された 著者 bobince,

\b, as well as \w and \W, isn't Unicode-aware in JavaScript. You have to define your word boundaries as a specific character set. Like (^|$|[\s.,:\u3002]+) or similar.

\u3002 is from ('。'.charCodeAt(0)).toString(16). Is it a punctuation symbol in Japanese?

あるいは、逆に、単語を構成する文字のUnicode範囲を定義し、それを否定します。

var boundaries = /(^|$|\s+|[^\u30A0–\u30FA]+)/g;

http://www.unicode.org/charts/PDF/U30A0から取られたカタカナの範囲の例.pdf

4
追加された
はい、それは完全な停止であり、単語(文)の境界で分割する数少ない信頼できる方法の1つです。それよりもうまくいくことは、(ピーターの答えによると)非常に難しいです。
追加された 著者 bobince,
私はイエスと思う。 '。'は句読記号です
追加された 著者 Andrei,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript