From: Neon Absentius <absent@sdf.lonestar.org>
Subject: Re: re-search beginning of line or whitespace
Date: Thu, 3 Nov 2005 20:33:16 +0000 [thread overview]
Message-ID: <20051103203316.GA29396@SDF.LONESTAR.ORG> (raw)
In-Reply-To: <20051102171914.GC1791@johnsons-web.com>
On Wed, Nov 02, 2005 at 08:19:14AM -0900, thus spake Tim Johnson:
> Let me see if I understand the logic of this strange creature called
> "regular expressions":
>
> "^" ;; match beginning of line
> "\\|" ;; seperator for alternatives
> "[\t ]" ;; match any of: TAB, SPACE
>
It should really be two slashes: [\\t ]. That escaped me ;).
> Am I correct?
> I get confused by the way that emacs "escapes" metacharacters.
It is explained nicely in the elisp manual:
,----[ (info "(elisp) Regexp Special") ]
| `\'
| has two functions: it quotes the special characters (including
| `\'), and it introduces additional special constructs.
|
| Because `\' quotes special characters, `\$' is a regular
| expression that matches only `$', and `\[' is a regular expression
| that matches only `[', and so on.
|
| Note that `\' also has special meaning in the read syntax of Lisp
| strings (*note String Type::), and must be quoted with `\'. For
| example, the regular expression that matches the `\' character is
| `\\'. To write a Lisp string that contains the characters `\\',
| Lisp syntax requires you to quote each `\' with another `\'.
| Therefore, the read syntax for a regular expression matching `\'
| is `"\\\\"'.
`----
You see, for the regular expression parser of emacs certain
characters have to be escaped for example "|" when one uses it to
indicate disjunction, so you write it "\|". However when you write
a Lisp program the regexp is entered as a string, and since "\" is
an elisp escape character a sting that contains "\|" is interpreted
as "|". You don't want that, you want the string to pass to the
"regexp machine" as is, you want the regexp to have "\|"; therefore
you have to escape the slash thus "\\|".
I hope this makes some sense.
>
> Thanks again
> tim
>
> --
> Tim Johnson <tim@johnsons-web.com>
> http://www.alaska-internet-solutions.com
>
>
> _______________________________________________
> Help-gnu-emacs mailing list
> Help-gnu-emacs@gnu.org
> http://lists.gnu.org/mailman/listinfo/help-gnu-emacs
--
Computer science is not about computers, any more than astronomy is
about telescopes.
-- Edsger Dijkstra
next prev parent reply other threads:[~2005-11-03 20:33 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-01 15:23 ^[$B:G?78D<<3+J|^[(B info
2005-11-02 2:39 ` re-search beginning of line or whitespace Tim Johnson
2005-11-02 3:23 ` Neon Absentius
2005-11-02 17:19 ` Tim Johnson
2005-11-03 20:33 ` Neon Absentius [this message]
2005-11-04 16:38 ` Info [was Re: re-search beginning of line or whitespace] Tim Johnson
[not found] ` <mailman.13851.1131050044.20277.help-gnu-emacs@gnu.org>
2005-11-04 1:05 ` re-search beginning of line or whitespace Johan Bockgård
2005-11-04 1:47 ` Neon Absentius
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051103203316.GA29396@SDF.LONESTAR.ORG \
--to=absent@sdf.lonestar.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).