搜索單詞邊界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