Re: Regex repeating capture
- From: "Paul Lalli" <mritty@xxxxxxxxx>
- Date: 30 Jan 2007 09:50:19 -0800
On Jan 30, 12:13 pm, "Jay" <JaythePC...@xxxxxxxxx> wrote:
I'm trying to break an input string into multpile pieces using a
series of delimiters that start with an asterisk. Following the
asterisk is a mulitple character identifier immediately followed by a
data string of variable length. The input string may contain more than
one identifier anywhere in the string. In all, there are 50+
identifiers to search for and the asterisk is allowed to part of the
data string as long as it isn't defined as an identifier (it would be
treated as another identifier at that point).
Here is a simple example:
*CZ1 2.3 4-56 *fuuuS24364 08 23 72
I'd like to break this into
CZ
1 2.3 4-56
fuuu
S24364 08 23 72
So CZ and fuuu are your delimiters, but only if preceded by an
asterisk, and you want those delimiters to also be in your results?
I have tried the pattern (?:\*(CZ|fuuu)(.*)),
What does that mean? How did you try it? In a list-context pattern
match? In a split? In a scalar-context pattern match with the /g
option? Please show your actual code, not a tiny piece of it.
which produces the
following ouput:
CZ
1 2.3 4-56 *fuuuS24364 08 23 72
How can I force it to repeat the capturing?
Without knowing what you actually did, there's no way to tell you how
to modify it. I will say that the following seems to produce the
results you were looking for, for the data you gave:
perl -le'
my @fields = split /(\*(?:CZ|fuuu))/, q{*CZ1 2.3 4-56 *fuuuS24364 08
23 72};
s/^\*// for @fields;
print for grep { length } @fields;
'
CZ
1 2.3 4-56
fuuu
S24364 08 23 72
perldoc -f split
perldoc -f grep
perldoc perlretut
Paul Lalli
.
- References:
- Regex repeating capture
- From: Jay
- Regex repeating capture
- Prev by Date: Re: Regex repeating capture
- Next by Date: Re: Regex repeating capture
- Previous by thread: Re: Regex repeating capture
- Next by thread: Re: Regex repeating capture
- Index(es):
Relevant Pages
|