1

我想从字符串中删除所有非字母数字字符。除了空格, - 和一些德语字符。

例子

regexp = "mönchengladbach."
regexp.gsub(/[^0-9a-z \-]/i, '')
=> mnchengladbach

我需要这个:

=> mönchengladbach

它也不应该替换其他德语字符,例如:

ä ö ü ß

谢谢!

编辑:

只是我没有正确测试。IRB 不接受特殊字符。这对我有用:

regexp.gsub(/[^0-9a-z \-äüöß]/i, '')
4

2 回答 2

3

要删除所有不是字母或空格的内容,您可以使用以下命令:

str.gsub(/[^\p{L}\s]+/, '')

我在这里使用否定字符类,[^\p{L}\s]表示所有不是字母(在您想要的所有语言中)或白色字符(空格、制表符、换行符)

\p{L}是 Letters 的 unicode 字符类。

您可以轻松添加要保留的其他字符,例如-

str.gsub(/[^\p{L}\s-]+/, '')

示例脚本:

# encoding: UTF-8

str = "mönchengladbach."

str = str.gsub(/[^\p{L}\s]+/, '#')

puts str
于 2013-07-22T23:37:40.123 回答
0

我想你想要:

/[^[:alnum:] -]/

请注意,当它位于 a 的末尾时,它//i不是必需的,也不需要转义-[]

于 2013-07-23T01:04:02.337 回答