| 
	
 | 
 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] 
 |