用于在Unicode字符串中搜索单词边界的Javascript正则表达式

时间:2011-10-28 09:49:14

标签: javascript regex unicode word-boundary xregexp

是否有解决方案可以通过JavaScript正则表达式(“xregexp”JS库cab使用)找到日语字符串中的单词边界(例如:“私はマーケットに行きました。”)?

E.g:

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

我需要日语字符串的相同逻辑。

2 个答案:

答案 0 :(得分:6)

然而,将日语句子分成单词的实际问题比看起来更复杂,因为单词不会像英语那样分成空格。

例如,句子私はマーケットに行きました。(“我去市场”)有以下几个字:

  • 私 - watakushi
  • は - wa
  • マーケット - maaketto
  • に - ni
  • 行きました - ikimashita
  • 。 - (期间)

除了其他方面,一个可靠的日语句子解析器必须找到粒子(wa和ni)在句子中的位置,以便找到剩余的单词。

答案 1 :(得分:4)

\b以及\w\W在JavaScript中不支持Unicode。您必须将单词边界定义为特定字符集。像(^|$|[\s.,:\u3002]+)或类似。

\u3002来自('。'.charCodeAt(0)).toString(16)。它是日语中的标点符号吗?

或者,相反,定义Unicode范围的构造字母并否定它:

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

示例片假名范围取自http://www.unicode.org/charts/PDF/U30A0.pdf