help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Query replace regex with 2 alternatives


From: WJ
Subject: Re: Query replace regex with 2 alternatives
Date: 8 Dec 2012 22:07:25 GMT
User-agent: XanaNews/1.18.1.6

Jambunathan K wrote:

> Dan Espen <despen@verizon.net> writes:
> 
> > Could use some help on query/replace/regex.
> > 
> > I have an html file full of &lt; and &gt;.
> > I want to replace only some of the pairs with "[" and "]".
> > 
> > I figured out the match string:
> > 
> > "\\(&lt;\\|&gt;\\)
> > 
> > (typed as)
> > 
> > "\(&lt;\|&gt;\)
> > 
> > but when it comes to the replacement, I'm not clear on how to say,
> > first match gets [ and second match gets ].
> > I believe emacs can do it but I don't see it documented.
> > I see references to \1 \2 but not in the replace string.
> 
> rx-to-string is the easiest way to build such an regexp.
> 
> C-h f rx
> 
> Do this 
> 
> 1. M-x ielm RET
> 2. Copy the below regexp to the prompt
> 
>     (rx-to-string '(and (group-n 1 "&lt;") 
>                         (group-n 2 (minimal-match
>                                     (zero-or-more anything)))
>                         (group-n 3 "&gt;")))
> 
>    Here is a sample session.
> 
>     ,----
>     | ELISP> (rx-to-string '(and (group-n 1 "&lt;") 
>     |                     (group-n 2 (minimal-match
>     |                                 (zero-or-more anything)))
>     |                     (group-n 3 "&gt;")))
>     | "\\(?:\\(?1:&lt;\\)\\(?2:\\(?:.\\|\n\\)*?\\)\\(?3:&gt;\\)\\)"
>     `----
> 
> 3. C-x b file.html
> 4. M-x reb-change-syntax RET read RET
> 5. M-x re-builder RET
> 6. Copy paste the above regexp in to *RE-Builder* buffer
> 7. You will see the various components highlighted in HTML buffer
> 8. M-x reb-change-syntax RET string RET
> 9. You will see the above regexp changed from read syntax to string
>    syntax.  Something like.  (Yes, the regexp is on two lines)
> 
> "\(?:\(?1:&lt;\)\(?2:\(?:.\|
> \)*?\)\(?3:&gt;\)\)"
> 
> 10. C-M-% 
>     Copy the above regexp without surrounding double quotes RET
>     <\2> RET
> 
> You are done.

Where can the documentation for rx-to-string be found?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]