ruby - 正则表达式去除符号而不是 Ruby 中的外来字符

标签 ruby regex

有没有人有一个很好的正则表达式来从字符串中剥离所有符号(';.,_\$@!% 回车符等),而不损坏任何外来字符(é 多 db 等)?我想非正则表达式会更好,但我没有看到任何 Ruby 或 Rails 方法可以做到这一点。

最佳答案

什么是符号?这似乎是一个模糊的要求。 & 是一个符号,即使它只是单词“and”的简写?是 !一个符号,即使它在音译某些非洲语言时被用作字母字符?如果 $ 是一个符号,那是否意味着日元也是?我认为回答这个问题将大大有助于建议行动方案。

我认为最接近正则表达式的可能是 /[^\w\s]/。 Ruby 1.9 的 Regexp 引擎旨在很好地理解外语以正确知道哪些是“单词”字符,因此这将留下那些和空格。在我的测试中,这正确地从英语、日语和德语句子中删除了标点符号,同时保留了周围的字符。但是,对于 donut 来说,几乎所有的解决方案都会遇到边缘情况——处理世界上种类繁多的语言(其中一些甚至没有我们所知道的单词)是一项极其复杂的任务。

关于ruby - 正则表达式去除符号而不是 Ruby 中的外来字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231400/

相关文章:

css - Ruby on rails:样式表不工作 ExecJS::ProgramError

ruby-on-rails - 如何分隔 ruby 中的括号?

ruby-on-rails - Bundler 在创建 rails new APP 时抛出错误

带有 win32ole 的 Ruby 程序在 Windows 7 64 位下不再工作

Javascript:想要找到句子中以@开头的所有单词

ruby - 如何从 Ruby 中的进程调用中分别获取 STDOUT 和 STDERR?

javascript - 检测 selectionStart 处的单词是否为 URL

regex - emacs 主模式定义

Objective-C 正则表达式替换十六进制字节?

Java REGEX,从字符串中删除两种不同类型的注释