1
def get_hashtags(post)
tags = []
post.scan(/(?<![0-9a-zA-Z])(#+)([a-zA-Z]+)/){|x,y| tags << y}
tags
end
Test.assert_equals(get_hashtags("two hashs##in middle of word#"), [])
#Expected: [], instead got: ["in"]
如果它不看后面,看是否匹配犯规用一个词或数字开头?为什么它仍然接受'in'作为有效的匹配?为什么这个消极看起来后面错了?
因为该模式成功的第二个#(这不是前面有'[0-9a-zA-Z]')。 –