Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Regex Problem

0 views
Skip to first unread message

travis jeffery

unread,
Jul 19, 2008, 1:50:24 PM7/19/08
to Help-gn...@gnu.org

I'm trying to write and extension for using tumbr. In tumblr there are two
requirements for a post; title and body.

So I set up a tumblr post document as:
title:
body:

So get the title I use (string-match "\\title: \(.*\)\$"), which is fine
because it's on a single line. But with I'm having trouble getting the body
because it's multiple lines. So is there someway I can get any text
following the body:_space_? I was thinking also of saving the entire buffer
and then subtracting the title: TITLE and body:_space_ but I still don't
know about that.

Thanks for your help.
--
View this message in context: http://www.nabble.com/Regex-Problem-tp18547090p18547090.html
Sent from the Emacs - Help mailing list archive at Nabble.com.

Xah

unread,
Jul 20, 2008, 3:48:36 AM7/20/08
to
On Jul 19, 10:50 am, travis jeffery <eatsleepg...@gmail.com> wrote:
> I'm trying to write and extension for using tumbr. In tumblr there are two
> requirements for a post; title and body.
>
> So I set up a tumblr post document as:
> title:
> body:
>
> So get the title I use (string-match "\\title: \(.*\)\$"), which is fine
> because it's on a single line. But with I'm having trouble getting the body
> because it's multiple lines. So is there someway I can get any text
> following the body:_space_? I was thinking also of saving the entire buffer
> and then subtracting the title: TITLE and body:_space_ but I still don't
> know about that.
>
> Thanks for your help.

to get text out of the “body:”, you can do something like this:

(goto-char 1)
(search-forward "body:")
(setq mytext (buffer-substring-no-properties (point) (1+ (buffer-
size))))

for some basic elisp functions, see
http://xahlee.org/emacs/elisp_common_functions.html

Xah
http://xahlee.org/

John Paul Wallington

unread,
Jul 21, 2008, 12:23:16 PM7/21/08
to
Xah <xah...@gmail.com> writes:

> (setq mytext (buffer-substring-no-properties (point) (1+ (buffer-
> size))))

Just a nitpick: in general you want to use `point-max' rather than
(1+ (buffer-size)) to take into account any narrowing.

Thr4wn

unread,
Jul 21, 2008, 5:47:00 PM7/21/08
to

In an emacs regexp, you can directly enter a newline character as a
possible match by hitting C-j (will appear as ^J in the regexp) and/or
C-q C-m (honestly, I'm not exactly sure what the difference between ^J
and ^M is. I think one is \n while the other is \r. Since Windows
requires all lines to end with \r\n, I would allow for either ^J or ^M
in the search).

Also, \' means "end of buffer/string", so using both that knowledge, I
think the following will work...

"^body: ?\(\(.\|^J\|^M\)*\)\'" (there is a \' at the end of that
string)

Also, I am not certain if I understand why your regexp for title had \
\ at the beginning? wouldn't that match a literal backslash when you
really want just the beginning of the line (^)?

let me know if something I said didn't make sense.

-Thr4wn

Nikolaj Schumacher

unread,
Jul 22, 2008, 8:29:07 AM7/22/08
to Thr4wn, help-gn...@gnu.org
Thr4wn <Seth....@gmail.com> wrote:

> In an emacs regexp, you can directly enter a newline character as a
> possible match by hitting C-j (will appear as ^J in the regexp) and/or
> C-q C-m

You can, but you should most definitely not. It just makes the text
hard to read or edit in anything other than Emacs. Just use \n.

> Since Windows requires all lines to end with \r\n, I would allow for
> either ^J or ^M in the search).

I believe Emacs buffers will only contain \n even for Windows files.

> On Jul 19, 1:50 pm, travis jeffery <eatsleepg...@gmail.com> wrote:
>> So I set up a tumblr post document as:
>> title:
>> body:
>>
>> So get the title I use (string-match "\\title: \(.*\)\$"), which is fine

What do you mean by document? A file or a buffer? If so, why do you
use string-match? You can just search around in the buffer, which
should be more efficient.

regards,
Nikolaj Schumacher


Thr4wn

unread,
Jul 23, 2008, 3:30:51 PM7/23/08
to
On Jul 22, 8:29 am, Nikolaj Schumacher <n_schumac...@web.de> wrote:
> You can, but you should most definitely not. It just makes the text
> hard to read or edit in anything other than Emacs. Just use \n.

That's a good point, I didn't think about that.

However, whenever I try to use \n in my regex searches, emacs does not
seem to recognize that as a newline. the regexp syntax documentation
also does not seem to mention any way to refer to a newline.
Am I just missing something?

-Thr4wn

Drew Adams

unread,
Jul 23, 2008, 3:57:19 PM7/23/08
to Thr4wn, help-gn...@gnu.org
> > You can, but you should most definitely not. It just makes the text
> > hard to read or edit in anything other than Emacs. Just use \n.
>
> That's a good point, I didn't think about that.
>
> However, whenever I try to use \n in my regex searches, emacs does not
> seem to recognize that as a newline. the regexp syntax documentation
> also does not seem to mention any way to refer to a newline.
> Am I just missing something?

Interactively (e.g. C-M-s), you must use an actual newline character (via C-q
j), not \n.

Bernardo Bacic

unread,
Jul 23, 2008, 6:36:24 PM7/23/08
to help-gn...@gnu.org
it was a dark and stormy night when Drew Adams said,

> Interactively (e.g. C-M-s), you must use an actual newline character (via C-q
> j), not \n.

C-q C-j


Drew Adams

unread,
Jul 23, 2008, 6:43:23 PM7/23/08
to bernard...@pobox.com, help-gn...@gnu.org
> > Interactively (e.g. C-M-s), you must use an actual newline
> > character (via C-q j), not \n.
>
> C-q C-j

Oops, thanks; that's what I meant.

Nikolaj Schumacher

unread,
Jul 24, 2008, 7:18:27 AM7/24/08
to Thr4wn, help-gn...@gnu.org
Thr4wn <Seth....@gmail.com> wrote:

> However, whenever I try to use \n in my regex searches, emacs does not
> seem to recognize that as a newline. the regexp syntax documentation
> also does not seem to mention any way to refer to a newline.
> Am I just missing something?

You're not. \n is in fact not part of the regexp syntax. It's part
of the lisp string syntax. It's the same reason you need to use only
one \ interactively, but two in lisp.

By the way, if you are designing regular expressions, it's usually
easier to use `re-builder' than interactive search.


regards,
Nikolaj Schumacher


0 new messages