Noam Postavsky <
npos...@gmail.com>
writes:
> On Fri, Aug 22, 2014 at 12:21 PM, Thorsten Jolitz
> <
tjo...@gmail.com> wrote:
>> foo.el and other libraries of mine contains regexps with a technique I
>> stole from the Org developers: match every possible char with
>>
>> ,----
>> | "[^^@]+"
>> `----
>>
>> with ^@ being the NULL character entered with C-q.
>
> By the way, you should be able to use lisp string escape syntax
> instead of a literal NUL: "[^\0]+".
in org-mode they write it like "[^\000]+", and it should work really,
but I tried it and it failed sometimes, while the literal NUL was 100pc
reliable. I will try it again.
> Also, wouldn't this fail to match NUL chars? (rx (1+ anything)) gives
> "\\(?:.\\|\n\\)+", seems like that would be better...
isn't the whole idea based on the fact that NUL chars should not appear
ever in non-binary files (ok, I just proved the contrary with my regexps
...)?
This looks like a nice alternative, however I'm struggling a bit to make
it a regexp subgroup
#+BEGIN_SRC emacs-lisp
(string-match "\\(\\(.\\|\n\\)+?\\)\\(world\\)" "hello \nworld")
(match-string 0 "hello \nworld")
#+END_SRC
#+results:
: hello
: world
#+BEGIN_SRC emacs-lisp
(string-match "\\(\\(.\\|\n\\)+?\\)\\(world\\)" "hello \nworld")
(match-string 1 "hello \nworld")
#+END_SRC
#+results:
: hello
#+BEGIN_SRC emacs-lisp
(string-match "\\(\\(.\\|\n\\)+?\\)\\(world\\)" "hello \nworld")
(match-string 2 "hello \nworld")
#+END_SRC
#+BEGIN_SRC emacs-lisp
(string-match "\\(\\(:?.\\|\n\\)+?\\)\\(world\\)" "hello \nworld")
(match-string 2 "hello \nworld")
#+END_SRC
#+results:
:
#+BEGIN_SRC emacs-lisp
(string-match "\\(\\(.\\|\n\\)+?\\)\\(world\\)" "hello \nworld")
(match-string 3 "hello \nworld")
#+END_SRC
#+results:
: world
--
cheers,
Thorsten