>> Your regex would find the innermost tag of the first group, but
without the help of additional code it wouldn't be able to adjust to
the next, non-nested group nor would it be able to jump to the
adjacent group. <<

That's why I said with the appropriate loop.

My example in the next message works with the code you provided, and I
can't think of any situations why it shouldn't work, so hopefully it
helps make sense of whatever I was saying last night. :)


On 11/14/06, Rob Wilkerson <[EMAIL PROTECTED]> wrote:
> On 11/14/06, Peter Boughton <[EMAIL PROTECTED]> wrote:
> > Ah, I knew I was missing something.
> > ....but... you can prevent that with a negative lookahead. :)
> > Something along the lines of.
> > <Emphasis type="([a-z])[^"]+">([^<]|<(?!Emphasis))+?</Emphasis>
> > So it only matches Emphasis tags that do not themselves contain the
> > <Emphasis string.
> > That should work, right? (inside an appropriate cfloop)
>
> In a pure world, then maybe.  But in the world created by this
> example, the tags *do* contain other tags of the same type.  This
> would match a tag if, and only if, it did *not*.  The tags wouldn't
> get replaced if other tags of the same type were nested inside.
>
> The regex you applied would, in effect, find the innermost Emphasis
> tag of a particular group, but there may be many levels of nest and
> even many adjacent tags.  Everything isn't quite that neat, I don't
> think.  :-)
>
> Given:
>
> <Book>
> <Emphasis type="Bold">
> sample text
>  <Emphasis type="Italic">
>  sample Text
>       <Emphasis type="underline">
>           sample text
>       </Emphasis>
>  </Emphasis>
> sample text
> </Emphasis>
> <Emphasis type="Bold">
> sample text
>  <Emphasis type="Italic">
>  sample Text
>       <Emphasis type="underline">
>           sample text
>       </Emphasis>
>  </Emphasis>
> sample text
> </Emphasis>
> </Book>
>
> Your regex would find the innermost tag of the first group, but
> without the help of additional code it wouldn't be able to adjust to
> the next, non-nested group nor would it be able to jump to the
> adjacent group.
>
> I think you're right - it could be done, but it doesn't seem as
> intuitive to my brain.  To me it's easier to find a particular tag
> (using /<Emphasis type="[a-z]+">/ or whatever regex) and from the end
> point of that tag look for /<\/?Emphasis>/.  If you encounter another
> open Emphasis tag, increment the counter, if you encounter a close
> Emphasis tag and the counter is "0" then you've found the end tag
> you're looking for, else decrement the counter.
>
> Like anything else, I guess:  there's more than one way to do it.  I
> just can't quite wrap my brain around the way you're proposing.  :-)
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: http://www.houseoffusion.com/groups/RegEx/message.cfm/messageid:993
Subscription: http://www.houseoffusion.com/groups/RegEx/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.21

Reply via email to