You are here: Re: [PHP] Regex for Amateur Radio Callsigns « PHP « IT news, forums, messages
Re: [PHP] Regex for Amateur Radio Callsigns

Posted by Curt Zirzow on 11/16/05 08:26

On Wed, Nov 16, 2005 at 12:25:22AM -0500, Leonard Burton wrote:
> HI Curt,
> > > W1W
> > > W1AW
> > > WA1W
> > > AD4HZ
> > > N9URK
> > > WB6NOA
> > > 4N1UBG
> > Ok, so i can conclude so far we have alpha numeric chars minimum of
> > 3 chars up to 6, this would make a regex:
> > /[A-Z0-9]{3,6}/
>
> The only problem with this is that it would take "444" which is not a
> valid call.
> > > $pattern = "/^";
> > > $pattern .= "([0-9][A-Z][0-9][A-Z]{3})|"; //4N1UBG
> > > $pattern .= "([A-Z][0-9][A-Z]{1,3})|"; //N9URK, W1AW, W1W
> > > $pattern .= "([A-Z]{2}[0-9][A-Z]{1,3})"; //WB6NOA, AD4HZ, WA1W
> > > $pattern .= "/";
> > >
>
> > If this pattern works according to the specs of a callsign, it
> > should work fine. You could try to combine the regex into one
> > statment (without the | condition) but that would make the regex
> > rather ugly.
>
> I am looking for a regex that I can use for both preg_split and
> preg_match. I have not yet really learned how to do preg_splits yet.
> I am still trying to figure out what in the world to do. I have done
> some preg_splits and I know enought to know that if you have more than
> one set of () that will return on an expression then it will royally
> mess things up.

I guess the difference between a _match a _split is that a _match
is what you are looking for a _split is what is usually ignored
because you want to seperate the data based on the regex. if you
use _split and want to know what the value was, then use the
PREG_SPLIT_DELIM_CAPTURE option for it, the array returned will
include the match that made the split to occur.

>
> > One thing i would suggest, although probably a minor issue
> > considering how long the string is, is to make sure you put the
> > most likely match in your first pattern to match.
>
> Actually that is a good suggestion. I can see how it would make
> things more efficent. Should you order the whole expression in terms
> of how likely it is to get a result?
> (i.e. "/^(most)|(frequent)|(least)/")

yeah, i wouldn't consider myself that much of an expert on it but
from my understanding on matching the sooner the match the better.
That is usually why the anchor ^ is used in most expression, if
pcre knows it is a start of the line it doesn't have to do any
fuzzy matching, it knows exactly where to start.

What kind of context are you trying to match?

A paragraph that mentions a callsign:
You can contact me at 4N1UBG, blah blah

or some sort of formated data:

4N1UBG, me
N9URK, someone
...


Curt.
--

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация