[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Newbie regexp question
From: |
Bingham, Jay |
Subject: |
RE: Newbie regexp question |
Date: |
Wed, 30 Oct 2002 10:57:31 -0600 |
Fredrich,
It is too bad that you do not understand what Paul wants to do.
Paul,
Here is what I understand you want to do:
find the next occurrence of <!--Test-->, find the next occurrence <!--End of
Test-->, delete everything between the start of <!--Test--> and end of <!--End
of Test-->, do this repeatedly in the buffer.
There are some problems with your approach to this.
First, you did not end the pattern <!--Test--> with an end of line (you should
probably also end the pattern <!--End of Test--> with an end of line, unless
you want a blank line where these were found).
Second, regexp does not recognize "\n" as a new line it just puts an "n" in the
pattern. In order to match new lines you have to put literal new line
characters in the pattern. This is done with the C-q C-j sequence.
Third, even if you make the above corrections and produce the following pattern:
^[ \t]*<!--Test-->
\(.*
\)*[ \t]*<!--End of Test-->
it still will not do what you want it to do. The reason that it won't is that
the asterisk at the end of the sub-pattern \(.*
\)* tells emacs to match as many as possible of the preceding sub-pattern. So
this will match from the start of the first <!--Test--> to the end of the last
<!--End of Test-->. Not exactly what I think you had in mind.
The only way that I know to do what you want to do is to write a function to do
it. This function would prompt for the first pattern, then prompt for the
second pattern, then prompt for a replacement string. It would then search for
the first pattern, save the start location of the first pattern, search for the
second pattern and replace the range between the start of the first pattern and
the end of the second pattern with the replacement string. (I say replacement
string rather than pattern because the \DIGIT meta which is the only pattern
meta that is of use in a replacement pattern would not work without doing some
special coding in the function to simulate its operation).
I used to have a function that would delete everything between two patterns,
but when I left my last employer I failed to capture a copy of it. I kick my
self quite often for not capturing the functions that I developed there.
-_
J_)
C_)ingham
. HP - NonStop Austin Software & Services - Software Quality Assurance
. Austin, TX
. Language is the apparel in which your thoughts parade in public.
. Never clothe them in vulgar and shoddy attire. -Dr. George W. Crane-
-----Original Message-----
From: Friedrich Dominicus [mailto:frido@q-software-solutions.com]
Sent: Wednesday, October 30, 2002 9:34 AM
To: help-gnu-emacs@gnu.org
Subject: Re: Newbie regexp question
Paul Cohen <paco@enea.se> writes:
> Hi
>
> I want to do a Emacs regexp search and replace on a HTML file containing
> patterns like this:
>
> <!--Test-->
> ...
> <!--End of Test-->
>
> Where "..." denotes a variable number of lines of HTML text.
>
> I want to search for all occurrences of the above pattern and then
> remove them from the HTML file!
>
> I've tried a number of variants without any success. For example the
> following regexp doesn't work:
>
> <!--Test-->\(.*\n\)*<!--End of Test-->
I would restate the problem. It does not make much sense to me to
match over a bunch of lines you do not want to handle.
So how about
M-C-% ^[ \t]*<!--.*Test.*--> with: RET
Or even better if you kow exactly what you are looking for
using replace-string?
Regards
Friedrich
_______________________________________________
Help-gnu-emacs mailing list
Help-gnu-emacs@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnu-emacs
- Re: Newbie regexp question, (continued)
- Re: Newbie regexp question, Paul Cohen, 2002/10/30
- Re: Newbie regexp question, Friedrich Dominicus, 2002/10/30
- Re: Newbie regexp question, Michael Slass, 2002/10/30
- Re: Newbie regexp question, Friedrich Dominicus, 2002/10/30
- Re: Newbie regexp question, Michael Slass, 2002/10/30
- Re: Newbie regexp question, Michael Slass, 2002/10/30
Re: Newbie regexp question, Barry Margolin, 2002/10/30
Re: Newbie regexp question, Stefan Monnier <address@hidden>, 2002/10/30
Re: Newbie regexp question, kgold, 2002/10/31
RE: Newbie regexp question,
Bingham, Jay <=
RE: Newbie regexp question, Bingham, Jay, 2002/10/30
Re: Newbie regexp question, Paul Cohen, 2002/10/31
RE: Newbie regexp question, Bingham, Jay, 2002/10/31