in reply to Re: capturing words
in thread capturing words
Queue details.QUEUE(MQSI.3PL846) ----> REMOTE)RNAME(MQSI.3PL846) Queue details.QUEUE(MQSI.3PL944) ----> REMOTE)RNAME(MQSI.3PL944)
I am not familiar with whatever application produced the text so I don't know if it is wise to rely on the "QUEUE" and "RNAME" being the same. By the same token, I don't know if "QUEUE" and "RNAME" can appear more than once in one line. If they could then a different approach with a global match might be appropriate. However, if they are unique in a line then you can avoid non-greedy matching.
my $data = ' Timed out (reason: in while loop) ::expect_out(0,string) = > ::expect_out(1,string) = RF use CSWT#RF### dis qremote(MQSI.3PL846) RNAME1 : dis qremote(MQSI.3PL846) RNAME AMQ8409: Display Queue details.QUEUE(MQSI.3PL846)TYPE(QREMOTE)RNAME(MQ +SI.3PL846) No commands have a syntax error. AMQ8409: Display Queue details.QUEUE(MQSI.3PL944)TYPE(QREMOTE)RNAME(MQ +SI.3PL944) end2 : end '; my $match = qr {(?mx) ^ AMQ8409 .+ (QUEUE\([^)]+\)) .+ (RNAME\([^)]+\)) }; for ( split /\n/, $data ) { print "$1 ----> $2\n" if /$match/ }
This produces
QUEUE(MQSI.3PL846) ----> RNAME(MQSI.3PL846) QUEUE(MQSI.3PL944) ----> RNAME(MQSI.3PL944)
I hope this is of interest.
Cheers,
JohnGG
|
|---|