On May 9, 5:19 pm, globalrev <[EMAIL PROTECTED]> wrote:
> i want to a little stringmanipulationa nd im looking into regexps. i
> couldnt find out how to do:
> s = 'poprorinoncoce'
> re.sub('$o$', '$', s)
> should result in 'prince'
>
> $ is obv the wrng character to use bu what i mean the pattern is
> "consonant o consonant" and should be replace by just "consonant".
> both consonants should be the same too.
> so mole would be mole
> mom would be m etcfrom re import * vowels = "aAeEiIoOuU" cons = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ" encodeRe = re.compile(r"([%s])[%s]\1" % (cons,vowels)) print encodeRe.sub(r"\1",s) This is actually a little more complex than you asked - it will search for any consonant-vowel-same_consonant triple, and replace it with the leading consonant. To meet your original request, change to: from re import * cons = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ" encodeRe = re.compile(r"([%s])o\1" % cons) print encodeRe.sub(r"\1",s) Both print "prince". -- Paul (I have a pyparsing solution too, but I just used it to prototype up the solution, then coverted it to regex.) -- http://mail.python.org/mailman/listinfo/python-list
