@@ -202,8 +202,11 @@ match p = do
202202--  | error message.
203203--  |
204204--  | The returned parser will try to match the regular expression pattern once,
205- --  | starting at the current parser position. On success, it will return
206- --  | the matched substring.
205+ --  | starting at the current parser position. Note that this implies that an
206+ --  | expression starting as `^…` (i.e. with the beginning of line) will match the
207+ --  | current position even in absence of a preceding newline.
208+ --  |
209+ --  | On success, the parser will return the matched substring.
207210--  |
208211--  | If the RegExp `String` is constant then we can assume that compilation will
209212--  | always succeed and `unsafeCrashWith` if it doesn’t. If we dynamically
@@ -231,14 +234,24 @@ match p = do
231234--  |
232235--  | #### Example
233236--  |
234- --  | This example shows how to compile and run the `xMany` parser which will
235- --  | capture the regular expression pattern `x*`.
237+ --  | Compiling and running different regex parsers:
236238--  |
237239--  | ```purescript
238- --  | case regex "x*" noFlags of
239- --  |   Left compileError -> unsafeCrashWith $ "xMany failed to compile: " <> compileError
240- --  |   Right xMany -> runParser "xxxZ" do
241- --  |     xMany
240+ --  | example re flags text =
241+ --  |   case regex re flags of
242+ --  |     Left compileError -> unsafeCrashWith $ "xMany failed to compile: " <> compileError
243+ --  |     Right xMany -> runParser text do
244+ --  |       xMany
245+ --  |
246+ --  | -- Capturing a string per `x*` regex.
247+ --  | exampleXMany = example "x*" noFlags "xxxZ"
248+ --  |
249+ --  | -- Capturing everything till end of line.
250+ --  | exampleCharsTillEol = example ".*$" multiline "line1\nline2"
251+ --  |
252+ --  | -- Capturing everything till end of string. Note the distinction with
253+ --  | -- `exampleCharsTillEol`.
254+ --  | exampleCharsTillEos = example ".*$" dotAll "line1\nline2"
242255--  | ```
243256--  |
244257--  | #### Flags
@@ -249,9 +262,11 @@ match p = do
249262--  | regex "x*" (dotAll <> ignoreCase)
250263--  | ```
251264--  |
252- --  | The `dotAll`, `unicode`, and `ignoreCase` flags might make sense for
253- --  | a `regex` parser. The other flags will
254- --  | probably cause surprising behavior and you should avoid them.
265+ --  | The `dotAll`, `multiline`, `unicode`, and `ignoreCase` flags might make
266+ --  | sense for a `regex` parser. In fact, per JS RegExp semantics matching a
267+ --  | single line boundary in a multiline string requires passing `multiline`.
268+ --  |
269+ --  | Other flags will probably cause surprising behavior and should be avoided.
255270--  |
256271--  | [*MDN Advanced searching with flags*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#advanced_searching_with_flags)
257272regex  ::  forall  m . String  ->  RegexFlags  ->  Either  String  (ParserT  String  m  String )
0 commit comments