|
Posted by Rik on 07/20/07 09:26
On Fri, 20 Jul 2007 11:11:42 +0200, Noozer <dont.spam@me.here> wrote:
> Trying to parse some strings and I could really use some help with a =
> regular
> expression (and how to test it in php).
>
> My sample strings:
>
> Bob 1/0/X0 134 128 1 5 Data
> A comment line
> Bob 1/0/X2 84 82 25 0 COMPARTMENT1=
-3
> Bob 1/0/X1 1710 167 0 4 123 N/A
> Bob 11/0/X3 84 7 0 6 Data
>
> I'm trying to identify any string that starts with "Bob", then a space=
, =
> then
> a digit OR a space, then #/#/X#, three spaces, a 1 to 4 digit number, =
=
> some
> spaces, a 1 to 4 digit number, some spaces, a 1 to 4 digit number, som=
e
> spaces, a 1 to 4 digit number, some spaces, some alpha characters.
>
> In my sample, the first, third and fifth strings would test positive.
>
> I'm sure I've botched this up, but this is what I have so far.
>
> if (
> ereg('^Bob..[0-9]/[0-9]/X[0-9]\b[0-9]{1,4}(.{9,13})[0-9]{2,4}(.{9,13})=
[A-Za-z]*'
> , $line ) ) { ...mycode... }
>
preg_match('%
^Bob #start of string
\s+ #arbitrary whitespace
[0-9]{1,2} #1 or 2 digits
/ #literal
[0-9] #digit
/X #literal
[0-9] #digit
\s+ #arbitrary whitespace
[0-9]+ #digit(s)
\s+ #arbitrary whitespace
[0-9]+ #digit(s)
\s+ #arbitrary whitespace
[0-9]+ #digit(s)
\s+ #arbitrary whitespace
[0-9]+ #digit(s)
\s+ #arbitrary whitespace
.+ #rest of data
%ix',$line);
Then again: http://www.php.net/sscanf
$lineparts =3D sscanf($line,'Bob %d/%d/X%d %d %d %d %d %s');
-- =
Rik Wasmus
Navigation:
[Reply to this message]
|