Thanks Rob and Steve. I'm glad to know how to keep nulls from matching in the string, and why it works that way. I did end up testing to see if the string was null, and maybe that's better actually, since I take separate action based on whether it's null or not (no sense doing the comparison if the string is null -- it's comparing against 690,000 records).
I wasn't complaining about working all evening, by the way -- just highlighting how little I know about Perl since a little thing like that can keep me here all night! Thanks, Scott Scott E. Robinson SWAT Team UTC Onsite User Support RR-690 -- 281-654-5169 EMB-2813N -- 713-656-3629 "Rob Dixon" <[EMAIL PROTECTED] To: [EMAIL PROTECTED] .co.uk> cc: Subject: Re: Preventing null string from matching 03/25/03 07:23 AM Scott E Robinson wrote: > Dear Perl communinty, > > I don't exactly want to ask this now, since I just spent much of the > evening trying to handle this case, but I wonder if there's an easy > way to > keep the following regular expression from matching if the string in > the > regex is null: > > $_ = ":B000:L520:M260:M:88:8:M602:"; > $string_to_match="whatever"; > $count = () = /\b($string_to_match)\b/g; > > If $string_to_match is null, whatever's in $_ matches it -- and for > some > reason i don't understand it matches twice for every colon-delimited > piece > of $_, though that hardly matters. > > Is there an easy way to keep the null string from matching anything? > It > would have saved me an evening if I'd known about it. > > Thanks, > > Scott > > Scott E. Robinson > SWAT Team > UTC Onsite User Support > RR-690 -- 281-654-5169 > EMB-2813N -- 713-656-3629 > > > > "Rob Dixon" > <[EMAIL PROTECTED] To: > [EMAIL PROTECTED] .co.uk> cc: > Subject: Re: > Searching for the right regular expressions > > 03/24/03 10:08 AM > > > > > > Hi. Rading your post again, it looks like I kinda screwed up. > Lets try again! > > Rob Dixon wrote: > > Hi Scott > > > > Scott E Robinson wrote: > > > Dear Perl experts, > > > > > > I'm trying to find the right regular expressions to do some simple > > > (?) string processing. Can anyone tell me how to do these? > > > > > > 1. Given a string consisting of substrings delimited by colons, > > > such as :B520:L201:M:M260:8:G607:, > > > > my $string = ':B520:L201:M:M260:8:G607:'; > > > > > how can I > > > a. remove the single-character and all-numeric substrings (M > > > and 8 in this example), leaving the rest alone? > > > > This is an array of all the wanted substrings: > > > > my @wanted = $string =~ /[a-z]\w+/ig; > > print "@wanted\n"; > > > > output > > > > B520 L201 M260 G607 > > I think that's right, although it assumes that the values that aren't > all-numeric start with an alpha. > > > > b. remove all but the single-character and all-numeric > > > substrings and leave the rest alone? > > > > This is an array of all the wanted substrings: > > > > my @wanted = $string =~ /\b\w\b/ig; > > print "@wanted\n"; > > > > output > > > > M 8 > > Right result, but fails to find '88'. Try: > > my @wanted = $string =~ /\b\w\d*\b/ig; > > > > c. remove all but single- or double-character substrings and > > > all-numeric substrings and leave the rest alone? > > > > This is an array of all the wanted substrings: > > > > my @wanted = $string =~ /\b[a-z]\w?\b/ig; > > print "@wanted\n"; > > > > output > > > > M > > This is right, I think. > > > (Note that this won't find '8M', but your data doesn't look like > > that will come up.) > > > > > That's more like it! > > Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]