in reply to Regular Expression
You need to slurp all of your data into a variable and use the /s modifier on your regex. You also need to be careful about how you are using your greedy matching. Finally, use backreferences to match the ending tags to the start tags. Here's how I might do it:
#!/usr/bin/perl -w use strict; undef $/; # Slurp mode $_ = <DATA>; while (/<\?--([^-]*)-([^-]*)-->(.*?)<\/\?--\1-\2-->/sg) { print "1: ($1)\n"; print "2: ($2)\n"; print "3: ($3)\n"; } __DATA__ <?--1-1--> <b>This is option 1 ok</b> </?--1-1--> <?--1-2--> <b>This is option 1 version b</b> </?--1-2--> <?--1-3--> <b>Option 1 version 3</b> </?--1-3--> <?--1-Version4--> <b>Option 1 version 4 Perl</b> </?--1-Version4-->
-sauoq "My two cents aren't worth a dime.";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Regular Expression
by Anonymous Monk on Oct 16, 2002 at 20:14 UTC |