Регулярное выражение Javascript для поиска границ слов в строке Unicode - PullRequest
4 голосов
/ 28 октября 2011

Есть ли решение для нахождения границ слов в японской строке (например, "私 は マ ー ケ ト に 行 き ま し た。)") с помощью регулярных выражений JavaScript (можно использовать библиотеку JS "xregexp")?

например:.

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

Мне нужна та же логика для японских строк.

Ответы [ 2 ]

6 голосов
/ 28 октября 2011

Однако реальная проблема разделения японского предложения на слова сложнее, чем кажется, поскольку слова не разделяются на пробелы, как, например, в английском.

Например,Предложение "" マ ー ケ ッ ト に 行 き ま し た "(« Я ходил на рынок ») имеет следующие слова:

  • 私 - ватакуши
  • は - ва
  • マ ー ケ ッ ト - maaketto
  • に - ni
  • 行 き ま し た - ikimashita
  • 。 - (точка)

Надежный синтаксический анализатор японских предложений будеткроме всего прочего, нужно найти, где частицы (wa и ni) лежат в предложении, чтобы найти оставшиеся слова.

4 голосов
/ 28 октября 2011

\b, а также \w и \W не поддерживают Unicode в JavaScript.Вы должны определить свои границы слов как определенный набор символов.Как (^|$|[\s.,:\u3002]+) или аналогичный.

\u3002 от ('。'.charCodeAt(0)).toString(16).Является ли это символом пунктуации на японском языке?

Или, наоборот, определите диапазон слов, создающих слова в Юникоде, и отрицайте его:

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

Пример диапазона катаканы взят из http://www.unicode.org/charts/PDF/U30A0.pdf.

...