如何获得给定句子中与特定模式匹配的特定单词列表?

时间:2017-11-29 00:06:39

标签: erlang elixir phoenix-framework elixir-framework

我是Elixir的新手,并不确定其字符串匹配功能。 我正在尝试编写一个elixir函数,它接受一个字符串S作为输入,它基本上只是一条推文并输出其中包含一个#标签的所有单词(#)

S = "This is a #bad day for #trump #america"

def get_hashtags(S)
.......
end

Output : ["#bad", "#trump", "#america"]

这会有很大的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

查看Regex模块

iex> ~r/#[^\s]+/ 
     |> Regex.scan("This is a #bad day for #trump #america") 
     |> Enum.map(&hd/1)

["#bad", "#trump", "#america"]

答案 1 :(得分:1)

完成此任务的快速和完美方式是过滤器中的模式匹配:

"This is a #bad day for #trump #america"
|> String.split()
|> Enum.filter(fn 
     <<"#", _ :: binary>> -> true
     _ -> false
   end)
#⇒ ["#bad", "#trump", "#america"]