有没有人有一个很好的正则表达式来从字符串中剥离所有符号(';.,_\$@!% 回车符等),而不损坏任何外来字符(é 多 db 等)?我想非正则表达式会更好,但我没有看到任何 Ruby 或 Rails 方法可以做到这一点。
最佳答案
什么是符号?这似乎是一个模糊的要求。 & 是一个符号,即使它只是单词“and”的简写?是 !一个符号,即使它在音译某些非洲语言时被用作字母字符?如果 $ 是一个符号,那是否意味着日元也是?我认为回答这个问题将大大有助于建议行动方案。
我认为最接近正则表达式的可能是 /[^\w\s]/
。 Ruby 1.9 的 Regexp 引擎旨在很好地理解外语以正确知道哪些是“单词”字符,因此这将留下那些和空格。在我的测试中,这正确地从英语、日语和德语句子中删除了标点符号,同时保留了周围的字符。但是,对于 donut 来说,几乎所有的解决方案都会遇到边缘情况——处理世界上种类繁多的语言(其中一些甚至没有我们所知道的单词)是一项极其复杂的任务。
关于ruby - 正则表达式去除符号而不是 Ruby 中的外来字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231400/