搜索单词边界JavaScript正则表达式是否有解决方案,找到在日本串字边界(例如:“私はマーケットに行きました”)通过JavaScript正则表达式(“xregexp” JS库出租车使用)?为Unicode字符串
例如为:
var xr = RegExp("\\bst","g");
xr.test("The string") // --> true
我需要日本字符串相同的逻辑。
搜索单词边界JavaScript正则表达式是否有解决方案,找到在日本串字边界(例如:“私はマーケットに行きました”)通过JavaScript正则表达式(“xregexp” JS库出租车使用)?为Unicode字符串
例如为:
var xr = RegExp("\\bst","g");
xr.test("The string") // --> true
我需要日本字符串相同的逻辑。
然而,将日语句子分隔成单词的实际问题比看起来更为复杂,因为单词并不像空格那样分隔为空格,例如英语。
例如,句子私はマーケットに行きました( “我去市场”)具有如下的话:
日语句子的可靠的解析器会,除其他事项外,必须找到其中颗粒(WA和Ni)位于句子,以便找到剩余的词。
是的,这真的很难;你必须有大的词典和启发式的猜测,当使用一系列字符(特别是假名)时,更可能是什么词语。有可能让双关语可以以多种方式阅读一个句子,所以最终这个任务不是完全可以解决的,而且你可以使用像正则表达式那样的工具来做很少的事情(不必介意JavaScript的Unicode无知的正则表达式)。 – bobince
\b
以及\w
和\W
在JavaScript中不支持Unicode。您必须将您的单词边界定义为特定的字符集。像(^|$|[\s.,:\u3002]+)
或类似的。
\u3002
为('。'.charCodeAt(0)).toString(16)
。这是日语中的标点符号吗?
或者,一种反证,定义的字构成字母一个Unicode范围和否定它所:从http://www.unicode.org/charts/PDF/U30A0.pdf采取
var boundaries = /(^|$|\s+|[^\u30A0–\u30FA]+)/g;
示例片假名范围。
我不明白,'\\ bst'是什么? – hippietrail
一种匹配汉,平假名和片假名之间边界的方法将有助于但不能单独解决这个问题。到目前为止,我甚至找不到匹配这些的方法,即使使用xregexp。你可能对我刚刚问到的问题感兴趣:http://stackoverflow.com/questions/16492933/regular-expression-to-match-boundary-between-different-unicode-scripts – hippietrail
对于日本人来说,最好是使用完整的形态分析仪。这里是JavaScript中的一个:https://github.com/takuyaa/kuromoji.js – katspaugh