正则表达式删除第一个句号

时间:2014-07-16 10:24:24

标签: ruby regex

我正在尝试从电子邮件中删除"@"符号之前的句点。我得到了:

array[0][2].gsub(/\./, '').strip

删除两个句点; "an.email@test.com"成为"anemail@testcom",而我正在寻找它"anemail@test.com"。我不能单独删除单个句点。我做错了什么?

3 个答案:

答案 0 :(得分:1)

如果@之前没有句号或者有多个句号,则可以使用此正则表达式

email = "my.very.long.email@me.com"
email.gsub(/\.(?=[^@]*\@)/, '')
# => "myverylongemail@me.com"

正则表达式解释:句点后跟零{或}更多出现@以外的任何字符,后跟@

如果只需删除@之前的第一个句点,则可以使用sub代替gsub的相同正则结构

答案 1 :(得分:0)

result = subject.gsub(/\.(?=\S+@)/, '')

<强>解释

  • \.匹配一段时间
  • (?=\S+@) lookahead断言接下来的是任何非空白字符后跟arrobas
  • 我们用空字符串替换

<强>参考

答案 2 :(得分:0)

不要试图缩短它,使其变得更加复杂。按你的意思写它:

a, b = address.split('@')
cleaned = [a.delete('.'), b].join('@')