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]