rsriram has asked for the wisdom of the Perl Monks concerning the following question:
Hi, In a text file, if there are any listed structures, the start and end will be marked by <bl>..</bl>. All the lines between these elements should be tagged as <listitem>..</listitem>. I wrote a code as below:
if (m|<bl>| .. m|</bl>|) { s/^(?!<bl>)|(?<=<bl>)/<listitem>/g; s-(?=</bl>)|(?<!</bl>)(?=\n)-<\/listitem>-g; }
This is working fine if the structure is plain like below:
<bl>List item 1 List item 2 List item 3</bl>
But, I also encounter instances where <bl> appears within a <bl> like below:
If I run the above text with my code, the conversion fails. I intend to get the output as follows<bl>List item 1 List item 2 <bl>List item a List item b List item c</bl> List item 3</bl>
<listitem>List item 1</listitem> <listitem>List item 2</listitem> <listitem>List item a</listitem> <listitem>List item b</listitem> <listitem>List item c</listitem></listitem> <listitem>List item 3</listitem>
All the entires of the sublist should be tagged and later the end tag of item 2 should be inserted. Also after finishing the sublist, tagging for the main list should continue until </bl> for the main list is encountered. I could not derive a structure to the script for this. Could someone help me on this?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Help in using Regular Expressions
by cdarke (Prior) on Jun 12, 2008 at 07:37 UTC | |
|
Re: Help in using Regular Expressions
by Anonymous Monk on Jun 12, 2008 at 07:29 UTC | |
|
Re: Help in using Regular Expressions
by Anonymous Monk on Jun 12, 2008 at 07:35 UTC | |
|
Re: Help in using Regular Expressions
by pc88mxer (Vicar) on Jun 12, 2008 at 14:20 UTC |