On Fri, Oct 30, 2015 at 10:01 PM, John Cowan <co...@mercury.ccil.org> wrote:

> Peter Bex scripsit:
>
> > Note the nonl, which the manual states is equivalent to ".", but of
> > course nonl means "no newline".
>
> Dot in regular expressions has *always* meant "match any character but a
> newline".  It doesn't come up that much in Unix commands, which typically
> process their input line by line anyway.  But if you look at the Posix
> definition or the Perl one, you see that dot is indeed equivalent to
> "nonl".
> Indeed, "nonl" exists in order to have an SRE equivalent for dot.
>
> > Maybe Alex can give us some info about why this is the case?  I think
> this
> > may have something to do with the multi-line / single-line distinction
> > (which, to be honest, I never really understood).
>
> Multi-line and single-line mean totally different things: you can use one
> of them or both or neither.  Multi-line mode means that ^ and $ will match
> the beginning and end of a line as well as the beginning and the end of
> the string.  In non-multi-line mode, they match only the beginning and
> the end of the string.  Single-line mode means that dot matches newline;
> non-single-line mode means that it does not.
>

Yes, exactly.  The terminology "single-line" (/s) and "multi-line" (/m)
come from Perl though, and I think are confusing.  But these flags
exist only for PCRE compatibility, so I don't think it's worth changing
them.  With SREs there is no confusion: you always say explicitly
`any' or `nonl', `bol/eol' or `bos/eos'.

Note this is the same in Ruby regexen (which also allows a /m flag).

-- 
Alex
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to