有以下模塊:如何在Erlang中使用正則表達式匹配正則表達式?
receive
...
{raw, Text} ->
send(Socket, Text),
master(State);
...
end.
我想知道是否有可能匹配文本正則表達式,有一個簡單的條款,如果文本匹配。
有以下模塊:如何在Erlang中使用正則表達式匹配正則表達式?
receive
...
{raw, Text} ->
send(Socket, Text),
master(State);
...
end.
我想知道是否有可能匹配文本正則表達式,有一個簡單的條款,如果文本匹配。
由於沒有正則表達式模式,因此您無法直接在模式匹配中執行此操作(本例中爲接收模式)。有一個正則表達式庫,所以您可以在收到{text, Text}
消息後嘗試匹配,但它與只有匹配正則表達式纔有選擇地接收消息不同。
的一個情況下,你可以做的比這更好的是,如果你的正則表達式的Text
恆定的前綴,像"^some prefix"
,在那裏你可以使用"some prefix" ++ _Var
語法:
receive
...
{raw, Text = "some prefix" ++ _} ->
send(Socket, Text),
master(State);
...
end
您不能使用使用正則表達式所有的模式,至少不是正則表達式。模式具有與數據構造函數完全相同的結構。這意味着,除非正則表達式非常簡單並且可以像@archaelus示例中那樣表示爲模式,否則無需先從消息隊列中刪除它,就無法測試消息。然後,您可以使用正則表達式模塊來測試字符串並從中提取字段。
在可預見的未來我看不到這種變化。
你的意思是,只有當'文本'符合正則表達式時,你纔想收到消息? – 3lectrologos 2011-01-21 20:26:00