Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: RegEx related line split

by johngg (Abbot)
on Nov 11, 2011 at 17:59 UTC ( #937642=note: print w/ replies, xml ) Need Help??


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


Comment on Re: RegEx related line split
Download Code
Re^2: RegEx related line split
by dominic01 (Novice) 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 (Abbot) 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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://937642]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2014-09-17 02:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (56 votes), past polls