Ruby Regex消除非单词字符

时间:2014-05-12 04:20:27

标签: ruby regex

您好我想在Ruby中使用正则表达式消除非单词字符。

让我们说我有:

pal1 = "a@b?a"
pal1 = /[a-z0-9]/.match(pal1)

当我将其放入http://www.rubular.com/时,它表示匹配结果为: ABA

但是当我在我的红宝石中运行代码时,这不是真的,它只给出" a"

如何更改我的正则表达式以在pal1中实现aba。

提前感谢您的时间。

2 个答案:

答案 0 :(得分:6)

您可以使用gsub删除这些字符。

pal1 = 'a@b?a'
pal1.gsub(/[^a-z0-9]/i, '')
# => "aba"

您还可以使用scan来匹配这些字符,然后加入

pal1 = 'a@b?a'
pal1.scan(/[a-z0-9]/i).join
# => "aba"

答案 1 :(得分:1)

您可以执行以下任一操作:

pal1.gsub!( /[^a-z\d]/i, '' )     # Kill all characters that don't match
pal1 = pal1.scan(/[a-z\d]/i).join # Find all the matching characters as array
                                  # and then join them all into one string.