字符类的范围重复:/email/的正则表达式



xmpfilter 的结果

doc.search('.noimage p:nth-child(5)') do |kaipan|
    x = kaipan.to_s 
    x.scan(/[wd_-]+@[wd_-]+.[wd._-]+/) #=>  # !> character class has duplicated range: /[wd_-]+@[wd_-]+.[wd._-]+/
end

如果我不使用{do~end},这正是我所期望的。

[9] pry(main)> doc.search('.noimage p:nth-child(5)').to_s.scan(/[wd_-]+@[wd_-]+.[wd._-]+/)
=> ["xxxxxx@live.jp"]

在这里发帖让我再次意识到我的英语很差。。。英雄联盟我是日本人。这是我的第一篇文章。

警告消息(这是一个警告而不是错误,只有在启用警告时才会看到)是character class has duplicated range。正则表达式中的字符类是[...]中的内容,因此在您的情况下,它是[wd_-],并且警告告诉您它有一个"重复范围"。这意味着字符类的一部分指定与另一部分指定的字符相同的字符。

如果我们将类分解为几个部分,w[a-zA-Z0-9_]相同(请参阅Regexp文档),d[0-9]相同。但是0-9已经包含在w中,所以这个范围是重复的,这就是警告告诉你的。_也包含在w中,因此您可以将d_排除在正则表达式之外,并将其更改为[w-],这应该具有相同的效果,没有任何警告。

还要注意,-是字符类中的元字符,因此,虽然它在这里似乎有效,但您可能更安全地逃离它:[w-]

相关内容

  • 没有找到相关文章

最新更新