您好我想在Ruby中使用正则表达式消除非单词字符。
让我们说我有:
pal1 = "a@b?a"
pal1 = /[a-z0-9]/.match(pal1)
当我将其放入http://www.rubular.com/时,它表示匹配结果为: ABA
但是当我在我的红宝石中运行代码时,这不是真的,它只给出" a"
如何更改我的正则表达式以在pal1中实现aba。
提前感谢您的时间。
答案 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.