>>>>> John Machin <sjmac...@lexicon.net> (JM) wrote: >JM> On Apr 24, 1:29 am, Piet van Oostrum <p...@cs.uu.nl> wrote:
>>> obj = re.compile(r'(?:[a-z]+[-0-9]|[0-9]+[-a-z]|-+[0-9a-z])[-0-9a-z]*', >>> re.I) >JM> Understandable and maintainable, I don't think. Suppose that instead >JM> the first character is limited to being alphabetic. You have to go >JM> through the whole process of elaborating the possibilites again, and I >JM> don't consider that process qualifies as "express[ing] complicated >JM> conditions like that". No, I don't think regular expressions are the best tool for these kind of tests. I just wanted to show that it *could* be done. By the way, your additional hypothetical requirement that the first character should be alphabetic just makes it easier: only the first alternative remains. But on the other hand, suppose you would have the requirement that the pattern should not end in a hyphen then it becomes even uglier. Or when there should never be two hyphens in a row, I wouldn't even think of using a re, although theoretically it would be possible. Translating these requirements into re's is not `composable'. -- Piet van Oostrum <p...@cs.uu.nl> URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4] Private email: p...@vanoostrum.org -- http://mail.python.org/mailman/listinfo/python-list