Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在Unicode字符串中搜索单词边界的Javascript正则表达式_Javascript_Regex_Unicode_Word Boundary_Xregexp - Fatal编程技术网

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

用于在Unicode字符串中搜索单词边界的Javascript正则表达式,javascript,regex,unicode,word-boundary,xregexp,Javascript,Regex,Unicode,Word Boundary,Xregexp,是否有在日语字符串中查找单词边界的解决方案(例如:“私はマーケットに行きました。") 通过JavaScript正则表达式(“xregexp”JS库是否可以使用) 例如: 我需要对日语字符串使用相同的逻辑。\b,以及\w和\w,在JavaScript中不支持Unicode。您必须将单词边界定义为特定的字符集。例如(^ |$\124;[\ s,:\u3002]+)或类似 \u3002来自('...charCodeAt(0)).toString(16)。它是日文中的标点符号吗 或者,相反,定义一个Un

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

例如:


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

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

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

或者,相反,定义一个Unicode范围的构词字母并将其取反:

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

片假名的示例范围取自。

然而,将日语句子拆分为单词的实际问题比表面上更复杂,因为单词并不像英语中那样拆分为空格

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

  • 私 - 渡口
  • は - 佤邦
  • マーケット - 马凯托
  • に - 倪
  • 行きました - 池岛下
  • .-(期间)

一个可靠的日语句子解析器,除其他外,必须找到句子中的粒子(wa和ni)所在的位置,才能找到剩余的单词。

我认为是。“.”是标点符号是的,它是句号,是在单词(句子)处拆分的为数不多的可靠方法之一边界。做得更好是非常困难的(根据Peter的回答)。是的,这真的很难;你必须有大型的单词词典,以及猜测当一系列字符(特别是假名)出现时,哪些单词更有可能是什么意思的启发式方法可以用双关语来表达你可以用多种方式阅读一个句子的意思,因此最终这个任务并不是完全可以解决的,而且像正则表达式这样简单的工具也没什么用(更不用说JavaScript的Unicode无知正则表达式了)。我不明白,什么是
\\bst
?匹配汉、平假名和片假名之间边界的方法会有帮助,但不能单独解决这个问题。到目前为止,我甚至找不到匹配这些的方法,即使是使用xregexp。你可能对我刚才问的一个问题感兴趣:对于日语来说,最好使用完整的形态学cal analyzer。下面是JavaScript中的一个:
var boundaries = /(^|$|\s+|[^\u30A0–\u30FA]+)/g;