http://www.perlmonks.org?node_id=937642


in reply to RegEx related line split

This might be what you want.

knoppix@Microknoppix:~$ perl -E ' > $line = q{(a) Line 1. (b) Line 2. (c) Line 32. (d) Line 42.}; > @arr = split m{(?=\([a-z]\))}, $line; > say qq{>$_<} for @arr;' >(a) Line 1. < >(b) Line 2. < >(c) Line 32. < >(d) Line 42.< knoppix@Microknoppix:~$

I hope this is of use.

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^2: RegEx related line split
by dominic01 (Sexton) on Nov 14, 2011 at 03:13 UTC
    Thank you. This works as per my requirement but I was trying one other pattern
    $line = q{a) Line 1. b) Line 2. c) Line 32. d) Line 42.};
    Here it matches if some (words) within () that are coming in the line.

      Do you mean that the opening parenthesis is optional in the text you are spliting? If so, you can use a '?' quantifier to make the opening parenthesis "zero or one of" but you also have to use a negative look behind to make sure you don't split '(' from 'a)'. I've added the 'x' modifier to the pattern so I can space it out and make it more readable.

      knoppix@Microknoppix:~$ perl -E ' > $line = q{(a) Line 1. b) Line 2. (c) Line 32. d) Line 42.}; > @arr = split m{ (?<! \( ) (?= \(? [a-z] \) ) }x, $line; > say qq{>$_<} for @arr;' >(a) Line 1. < >b) Line 2. < >(c) Line 32. < >d) Line 42.< knoppix@Microknoppix:~$

      I hope this is helpful.

      Cheers,

      JohnGG

Re^2: RegEx related line split
by johngg (Canon) on Nov 14, 2011 at 10:27 UTC

    Do you mean that the opening parenthesis is optional in the text you are spliting? If so, you can use a '?' quantifier to make the opening parenthesis "zero or one of" but you also have to use a negative look behind to make sure you don't split '(' from 'a)'. I've added the 'x' modifier to the pattern so I can space it out and make it more readable.

    knoppix@Microknoppix:~$ perl -E ' > $line = q{(a) Line 1. b) Line 2. (c) Line 32. d) Line 42.}; > @arr = split m{ (?<! \( ) (?= \(? [a-z] \) ) }x, $line; > say qq{>$_<} for @arr;' >(a) Line 1. < >b) Line 2. < >(c) Line 32. < >d) Line 42.< knoppix@Microknoppix:~$

    I hope this is helpful.

    Update: Oops, looks like I replied to myself rather than the OP's subsequent question. Please ignore this and consider my reply to him.

    Cheers,

    JohnGG

      Alas a senior moment, it happens to all old coders.