Просмотр исходного кода

Merge pull request #13312 from zmstone/0621-fix-regex_extract-docs

doc: fix regex_extract function doc
zmstone 1 год назад
Родитель
Сommit
af9bfc21cb
1 измененных файлов с 9 добавлено и 5 удалено
  1. 9 5
      apps/emqx_utils/src/emqx_variform_bif.erl

+ 9 - 5
apps/emqx_utils/src/emqx_variform_bif.erl

@@ -199,20 +199,24 @@ regex_match(Str, RE) ->
 regex_replace(SrcStr, RE, RepStr) ->
     re:replace(SrcStr, RE, RepStr, [global, {return, binary}]).
 
-%% @doc Searches the string Str for patterns specified by Regexp.
+%% @doc Non-global search for specified regular expression pattern in the given string.
 %% If matches are found, it returns a list of all captured groups from these matches.
 %% If no matches are found or there are no groups captured, it returns an empty list.
 %% This function can be used to extract parts of a string based on a regular expression,
 %% excluding the complete match itself.
+%%
 %% Examples:
 %%  ("Number: 12345", "(\\d+)") -> [<<"12345">>]
-%%  ("Hello, world!", "(\\w+)") -> [<<"Hello">>, <<"world">>]
+%%  ("Hello, world!", "(\\w+).*\s(\\w+)") -> [<<"Hello">>, <<"world">>]
 %%  ("No numbers here!", "(\\d+)") -> []
 %%  ("Date: 2021-05-20", "(\\d{4})-(\\d{2})-(\\d{2})") -> [<<"2021">>, <<"05">>, <<"20">>]
+-spec regex_extract(string() | binary(), string() | binary()) -> [binary()].
 regex_extract(Str, Regexp) ->
-    case re:run(Str, Regexp, [{capture, all_but_first, list}]) of
-        {match, [_ | _] = L} -> lists:map(fun erlang:iolist_to_binary/1, L);
-        _ -> []
+    case re:run(Str, Regexp, [{capture, all_but_first, binary}]) of
+        {match, CapturedGroups} ->
+            CapturedGroups;
+        _ ->
+            []
     end.
 
 ascii(Char) when is_binary(Char) ->