Erlang에서 regexp를 receive와 일치시키는 법?
다음 블록이 있습니다 :receive
...
{raw, Text} ->
send(Socket, Text),
master(State);
...
end.
Text에서 regexp를 일치시킬 수 있는지 궁금하고 Text가 일치하면 간단한 절이 있습니다.
Erlang에서 regexp를 receive와 일치시키는 법?
다음 블록이 있습니다 :receive
...
{raw, Text} ->
send(Socket, Text),
master(State);
...
end.
Text에서 regexp를 일치시킬 수 있는지 궁금하고 Text가 일치하면 간단한 절이 있습니다.
정규식 패턴이 없으므로 패턴 일치 (이 경우 수신 패턴)에서는 직접 수행 할 수 없습니다. 일반 표현식 라이브러리가 있으므로 {text, Text}
메시지를받은 후에 일치 항목을 시도 할 수는 있지만 정규식과 일치하는 경우에만 선택적으로 메시지를받는 것과는 다릅니다.
정규 표현식은 Text
의 일정한 접두사 인 경우 당신이 "some prefix" ++ _Var
구문을 사용할 수 있습니다 "^some prefix"
처럼,이보다 더 잘 할 수있는 일 경우 :
receive
...
{raw, Text = "some prefix" ++ _} ->
send(Socket, Text),
master(State);
...
end
당신은에서 사용하는 정규 표현식을 사용할 수 없습니다를 모든 패턴에서 적어도 정규 표현식으로. 패턴은 데이터 생성자와 정확히 동일한 구조를가집니다. 즉, 정규 표현식이 매우 단순하지 않고 @archaelus 예제와 같이 패턴으로 표현 될 수 없다면 메시지 큐에서 먼저 제거하지 않고 테스트 할 방법이 없습니다. 그런 다음 정규 표현식 모듈을 사용하여 문자열을 테스트하고 문자열을 추출 할 수 있습니다.
가까운 미래에 변하지 않을 것으로 보입니다.
감사합니다. 이 작동합니다. – Istvan
'Text'가 정규식과 일치하는 경우에만 메시지를 받으시겠습니까? – 3lectrologos