Регулярное выражение Python для имен пакетов Java

У меня проблемы с определением допустимых имен пакетов Java с использованием Python. Вот код:

    packageName = "com.domain.lala" # valid, not rejected -> correct
    #packageName = ".com.domain.lala" # invalid, rejected -> correct
    #packageName = "com..domain.lala" # invalid, not rejected -> incorrect
    #packageName = "com.domain.lala." # invalid, not rejected -> incorrect

    matchObject = re.match("([a-z_]{1}[a-z0-9_]*(\.[a-z_]{1}[a-z0-9_]*)*)",
                           packageName)

    if matchObject is not None:
        print packageName + " is a package name!"
    else:
        print packageName + " is *not* a package name!"
        Utilities.show_error("Invalid Package Name", "Invalid package name " + packageName + "!", "Ok", "", "")

Имена пакетов должны начинаться со строчной буквы или подчеркивания, и после каждой точки должна следовать хотя бы одна строчная буква или подчеркивание снова. Все остальные символы могут быть строчными буквами, цифрами или подчеркиванием. Запрещается запускать точки, и они не могут заканчиваться или начинаться с точки.

Как мне это решить?

6
задан Kawu 26 August 2010 в 16:30
поделиться