got it! very nice, not complicated at all. I didn't know about lookahead
feature. very useful.

this file that should be matched:
<TABLE>
 <TR><TD>row 1</TD></TR>
 <TR><TD>row 2</TD></TR>
 <TR><TD>row 3</TD></TR>
 <TR><TD>Bug some word</TD></TR>
 <TR><TD>row 4</TD></TR>
 <TR><TD>row 5</TD></TR>
</TABLE>

this is file that should not be matched:
<TABLE>
 <TR><TD>row 1</TD></TR>
 <TR><TD>row 2</TD></TR>
 <TR><TD>row 3</TD></TR>
 <TR><TD>Bug some word</TD></TR>
 <TR><TD>row 4</TD></TR>
 <TR><TD>row 5</TD></TR>
 <TR><TD>row 6</TD></TR>
</TABLE>

this is solution:

#!/usr/bin/perl
use warnings;
use strict;
my $file;
while(<>){
       $file .= $_;
        }

if ($file =~
m{(Bug(?:(?!<TR>).)*)</TR>\s+(<TR>(?:(?!<TR>).)*</TR>\s*){2}<\/TABLE>}s){
       print "matched: $1\n";
}
else{
print "failed\n";
}


this is run:
$ regex.pl file1.txt
matched: Bug some word</TD>

$ regex32.pl file2.txt
failed


thanx everyone!

On 10/13/06, Paul Johnson <[EMAIL PROTECTED]> wrote:

On Fri, Oct 13, 2006 at 12:36:33PM -0500, Charles K. Clarkson wrote:

> I.B. wrote:
>
> : unfortunately I have to use regex to solve this problem.
>
>     Why do you have to use a regex?

Because that is what the question stipulates.

--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>



Reply via email to