在Ruby中删除跟踪角度括号的所有字符

时间:2017-04-26 01:49:02

标签: ruby regex

我正在尝试清理多余字符所包围的电子邮件字符串。我使用的方法如下:

def email_clean(email)
    email = email.gsub(/(<+\w)/, "")
    email = email.gsub(/(>+\w)/, "")
    email = email.gsub(/(\w+=)/,"")  
    email = email.gsub(/(\w+:)/, "")
    email = email.gsub!(/\A"|"\Z/, '')
    email = email.delete('"')
    return email
end

我用以下示例字符串调用它:

email_clean("href="mailto:darren@*********.com"><span")

获得以下输出:

darren@*********.coman

我试图弄清楚为什么前两个gsub调用在删除尖括号时没有删除尾随的“an”。

1 个答案:

答案 0 :(得分:1)

这里的正则表达式存在问题:

email = email.gsub(/(<+\w)/, "")

这将删除一个或多个<个字符,后跟一个单词字符。你的意思是:

/<\w+/

虽然根据您的数据,您可能会在<

之后删除所有内容
/<.*/

请记住,您可以将gsub个操作链接在一起,此外,您可以在预先定义的数组中添加一堆“清洁”表达式:

MOPS = [
 /<.*/,
 /\A"|"\Z/
]

MOPS.inject(email) do |e, mop|
  e.gsub(mop, '')
end