Skip to content

Commit

Permalink
Add examples for Re.split_delim function
Browse files Browse the repository at this point in the history
Adds a few examples of using zero-length patterns as inputs to Re.split_delim.  Examples are taken from the test suite.  Related to ocaml#119 and ocaml#120.
  • Loading branch information
mooreryan committed Jul 13, 2024
1 parent 101280d commit 0edc5f9
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions lib/core.mli
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,35 @@ val split : ?pos:int -> ?len:int -> re -> string -> string list
# Re.split ~pos:3 regex "1,2,3,4. Commas go brrr.";;
- : string list = ["3"; "4. Commas go brrr."]
]}
{6 Zero-length patterns:}
Be careful when using [split_delim] with zero-length patterns like [eol],
[bow], and [eow]. Because they don't have any width, they will still be
present in the result. (Note the position of the [\n] and space characters
in the output.)
{[
# Re.split_delim (Re.compile Re.eol) "a\nb";;
- : string list = ["a"; "\nb"; ""]
# Re.split_delim (Re.compile Re.bow) "a b";;
- : string list = [""; "a "; "b"]
# Re.split_delim (Re.compile Re.eow) "a b";;
- : string list = ["a"; " b"; ""]
]}
Compare this to the behavior of splitting on the char itself. (Note that
the delimiters are not present in the output.)
{[
# Re.split_delim (Re.compile (Re.char '\n')) "a\nb";;
- : string list = ["a"; "b"]
# Re.split_delim (Re.compile (Re.char ' ')) "a b";;
- : string list = ["a"; "b"]
]} *)
val split_delim : ?pos:int -> ?len:int -> re -> string -> string list

Expand Down

0 comments on commit 0edc5f9

Please sign in to comment.