有沒有人有一個很好的正則表達式來剝離字符串中的所有符號(';。,_ \ $ @!%回車等),而不會損壞任何外部字符(é多فا等)?我猜,非正則表達式會更好,但我沒有看到任何Ruby或Rails方法。正則表達式去掉Ruby中的符號而不是外來字符
1
A
回答
4
什麼是符號?這似乎是一個模糊的要求。 &是一個符號,儘管它只是「and」這個詞的簡寫。是!一個符號,即使它在音譯一些非洲語言時用作字母字符?如果$是符號,這是否意味着円也是一樣?我認爲回答這個問題對於提出行動方案將有很大的幫助。
我認爲最接近你可能得到的正則表達式是/[^\w\s]/
。 Ruby 1.9的Regexp引擎是爲了正確理解外語,以正確地知道哪些是「單詞」字符,所以這將離開這些和空間。在我的測試中,這可以正確地從英語,日語和德語句子中刪除標點符號,同時留下週圍的字符。但是,美元兌甜甜圈會出現邊緣情況,幾乎可以解決任何解決方案 - 處理世界上各種各樣的語言(其中有些甚至沒有字,我們知道他們是)是一項非常複雜的任務。
3
好辦法做到這一點是在正則表達式來使用新的(ISH)Unicode字符類,如\P{L}
匹配任何是不是根據Unicode一個字母(在任何語言)。不幸的是,Ruby似乎不支持這個,即使在1.9。
也許1.9正則表達式語法分析器足夠聰明,不能匹配Unicode字符中構成特殊符號的字節,所以簡單列舉所有要去掉的字符都可以工作。這假定你真的可以枚舉你想要過濾出的所有字符,這可能比ASCII中的符號要多得多,比如邏輯不對,飛機等等......
相關問題
- 1. JavaScript字符串替換正則表達式來去掉非法字符
- 2. 除去撇號以外的標點符號正則表達式
- 3. 正則表達式 - 匹配外來字符的正則表達式是什麼?
- 4. 正則表達式過去的字符
- 5. Python的正則表達式來找到符號數字符號
- 6. 正則表達式,而不字符
- 7. 正則表達式來檢查符號
- 8. 正則表達式去掉圖像url?
- 9. 正則表達式去掉一個字符串中的緯度/長度
- 10. 在正則表達式中匹配字符*而不是\ *?
- 11. Java正則表達式結果字符而不是字
- 12. 這個去掉標點符號的正則表達式也錯誤地去掉了空格。幫助:(
- 13. 正則表達式的字符串查找號碼不是91
- 14. 使用字符串的方法,而不是正則表達式
- 15. JavaScript的正則表達式而不是取代「@」字符
- 16. 正則表達式中的#符號php
- 17. 正則表達式不檢測符號
- 18. 正則表達式不帶符號
- 19. 正則表達式來清潔字符
- 20. 在正則表達式字符括號中包含連字符?
- 21. R正則表達式除去撇號除外的所有標點符號
- 22. 正則表達式拒絕逗號以外的特殊字符
- 23. ruby正則表達式匹配除特定字符以外的任何字符
- 24. 正則表達式表達和下一個符號不是「(」
- 25. JavaScript'外來字符'正則表達式無法捕捉模式
- 26. 如何使用以除去字符之間的符號的正則表達式
- 27. 正則表達式字符?,$,|
- 28. 正則表達式字符
- 29. 正則表達式:匹配所有特殊字符,而不是*
- 30. Flex正則表達式字符字符
我想把&作爲一個象徵,以及$和円都作爲符號。 好神,我不知道!在某些語言中被用作字母字符,這真的很難。不過,我認爲這足以證明一個邊緣案例,我願意把它作爲一個符號來拋棄。 一般規則是,我願意將其作爲符號包含在內,而不是包含在內,而不是將外部語言中完全普通的單詞或句子完全刪除。 – 2010-02-09 20:02:08
@williamjones:實際上,我的意思是「円」的意思是它既用作$符號的等價物,又用作形成單詞的普通字符(例如shibunen,意思是象限)。順便說一句,我在我的修改中提出的正則表達式將永遠保留它。 – Chuck 2010-02-09 21:20:57
謝謝,這似乎從我的初步測試非常好。只改變我所做的就是使用/ [^ \ w] /來取消非空格的空白字符,例如回車符。 – 2010-02-09 22:41:50