我正在尝试清理多余字符所包围的电子邮件字符串。我使用的方法如下:
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”。
答案 0 :(得分:1)
这里的正则表达式存在问题:
email = email.gsub(/(<+\w)/, "")
这将删除一个或多个<
个字符,后跟一个单词字符。你的意思是:
/<\w+/
虽然根据您的数据,您可能会在<
:
/<.*/
请记住,您可以将gsub
个操作链接在一起,此外,您可以在预先定义的数组中添加一堆“清洁”表达式:
MOPS = [
/<.*/,
/\A"|"\Z/
]
MOPS.inject(email) do |e, mop|
e.gsub(mop, '')
end