2010-02-09 72 views

回答

4

什麼是符號?這似乎是一個模糊的要求。 &是一個符號,儘管它只是「and」這個詞的簡寫。是!一個符號,即使它在音譯一些非洲語言時用作字母字符?如果$是符號,這是否意味着円也是一樣?我認爲回答這個問題對於提出行動方案將有很大的幫助。

我認爲最接近你可能得到的正則表達式是/[^\w\s]/。 Ruby 1.9的Regexp引擎是爲了正確理解外語,以正確地知道哪些是「單詞」字符,所以這將離開這些和空間。在我的測試中,這可以正確地從英語,日語和德語句子中刪除標點符號,同時留下週圍的字符。但是,美元兌甜甜圈會出現邊緣情況,幾乎可以解決任何解決方案 - 處理世界上各種各樣的語言(其中有些甚至沒有字,我們知道他們是)是一項非常複雜的任務。

+0

我想把&作爲一個象徵,以及$和円都作爲符號。 好神,我不知道!在某些語言中被用作字母字符,這真的很難。不過,我認爲這足以證明一個邊緣案例,我願意把它作爲一個符號來拋棄。 一般規則是,我願意將其作爲符號包含在內,而不是包含在內,而不是將外部語言中完全普通的單詞或句子完全刪除。 – 2010-02-09 20:02:08

+0

@williamjones:實際上,我的意思是「円」的意思是它既用作$符號的等價物,又用作形成單詞的普通字符(例如shibunen,意思是象限)。順便說一句,我在我的修改中提出的正則表達式將永遠保留它。 – Chuck 2010-02-09 21:20:57

+0

謝謝,這似乎從我的初步測試非常好。只改變我所做的就是使用/ [^ \ w] /來取消非空格的空白字符,例如回車符。 – 2010-02-09 22:41:50

3

好辦法做到這一點是在正則表達式來使用新的(ISH)Unicode字符類,如\P{L}匹配任何是不是根據Unicode一個字母(在任何語言)。不幸的是,Ruby似乎不支持這個,即使在1.9。

也許1.9正則表達式語法分析器足夠聰明,不能匹配Unicode字符中構成特殊符號的字節,所以簡單列舉所有要去掉的字符都可以工作。這假定你真的可以枚舉你想要過濾出的所有字符,這可能比ASCII中的符號要多得多,比如邏輯不對,飛機等等......

相關問題