unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* help with Regexps
@ 2009-05-11  3:12 Santiago Mejia
  0 siblings, 0 replies; 3+ messages in thread
From: Santiago Mejia @ 2009-05-11  3:12 UTC (permalink / raw)
  To: help-gnu-emacs


I have a file that has these three types of entries (they all appear in
the beginning of the line).

1. %\card{\word{Mutter}}{mom, mommy, mother, nut}
2. \card{\atl{die} \word{Erkenntnis}}{cognition, cognizance, perception}
3. \card{\word{Jünglinge}}{teens, younglings}

And I want to be able to use (search-forward-regexp ???) within a
function to find only 3. (and not 1. and 2).

When I try: (search-forward-regexp "^\\card{\\word{[A-Z]"), emacs
complains: Search failed: "^\\card{\\word{[A-Z]" (in fact, even
(search-forward-regexp "^\\card") fails to find anything).  What am I
making wrong?

I could also solve the issue by excluding a particular string
(in this case "\atl") from a search.  How can one do this?

I read through the info, and tried searching on Google, but I was not
able to find a solution to either attempt.  It is probably there
(probably even in the info I read), but I was not able to sort it out.

Thanks in advance for any help.

Santiago.

P.D.  I tried posting this in the newsgroups, but it seems that there
was a problem, since I do not see my question appearing there.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: help with Regexps
       [not found] <mailman.6983.1242027435.31690.help-gnu-emacs@gnu.org>
@ 2009-05-11  8:33 ` Anselm Helbig
  2009-05-11 17:59   ` Santiago Mejia
  0 siblings, 1 reply; 3+ messages in thread
From: Anselm Helbig @ 2009-05-11  8:33 UTC (permalink / raw)
  To: help-gnu-emacs

Hi!

> I have a file that has these three types of entries (they all appear in
> the beginning of the line).
> 
> 1. %\card{\word{Mutter}}{mom, mommy, mother, nut}
> 2. \card{\atl{die} \word{Erkenntnis}}{cognition, cognizance, perception}
> 3. \card{\word{Jünglinge}}{teens, younglings}
> 
> And I want to be able to use (search-forward-regexp ???) within a
> function to find only 3. (and not 1. and 2).
> 
> When I try: (search-forward-regexp "^\\card{\\word{[A-Z]"), emacs
> complains: Search failed: "^\\card{\\word{[A-Z]" (in fact, even
> (search-forward-regexp "^\\card") fails to find anything).  What am I
> making wrong?

You have to quote the backslashes twice, the first time for the lisp
string and then for the regex:

  (search-forward-regexp "^\\\\card{\\\\word{[A-Z]")

Ugly, but consistent. 

HTH, 

Anselm


-- 
Anselm Helbig 
mailto:anselm.helbig+news2009@googlemail.com


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: help with Regexps
  2009-05-11  8:33 ` Anselm Helbig
@ 2009-05-11 17:59   ` Santiago Mejia
  0 siblings, 0 replies; 3+ messages in thread
From: Santiago Mejia @ 2009-05-11 17:59 UTC (permalink / raw)
  To: help-gnu-emacs


> I am still curious about the second alternative.  Do you, by any chance,
> know how to have regexp exclude a particular string (in this case,
> "\atl") from a search?

Regular expressions are bad at excluding things. You can try to do it
but it gets ugly very soon. I'd rather insert a second step, so your
program would look like this:

  (while (search-forward-regexp "^\\\\card{")
    (when (not (looking-at "\\\\atl"))
      (do-some-stuff)))
    
HTH, 

Anselm





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-05-11 17:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-11  3:12 help with Regexps Santiago Mejia
     [not found] <mailman.6983.1242027435.31690.help-gnu-emacs@gnu.org>
2009-05-11  8:33 ` Anselm Helbig
2009-05-11 17:59   ` Santiago Mejia

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).