[Tutor] need help with a regular expression

Mark Tolonen metolone+gmane at gmail.com
Sat Jun 28 19:32:17 CEST 2008

"Kelie" <kf9150 at gmail.com> wrote in message 
news:loom.20080628T091523-776 at post.gmane.org...
> Hello,
> I'm trying to write a regular expression to filter strings that meet the
> following criteria:
> 1. Starts with 0-3 underscores;
> 2. Followed by one letter;
> 3. Then followed by 0 or more letters or digits or hyphens('-'),
> 4. Ends with one letter or digit; and
> 5. There should not be more than one continuous hyphens.
> This is what I have so far. I think it meets all the criteria except for 
> the
> last one. Haven't figured out the answer yet.
> re.compile(r'_{0,3}[A-Z][A-Z0-9\-]*[A-Z0-9]')

In rule 4, does the string end with an *additional* letter or digit?  The 
string 'A' would seem to fit the rules, but the example provided would fail.

re.compile(r'^_{0,3}[A-Z](?:[A-Z0-9]|-(?!-))*[A-Z0-9]$')   # if rule 4 is an 
additional letter or digit
re.compile(r'^_{0,3}[A-Z](?:[A-Z0-9]|-(?!-))*(?<!-)$')       # if 
single-letter strings are allowed


More information about the Tutor mailing list