我在使用Python确定有效的Java软件包名称时遇到问题。这是代码:

    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", "", "")

程序包名称必须以小写字母或下划线开头,并且每个点后必须再次至少包含一个小写字母或下划线。所有其他字符可以是小写字母,数字或下划线。不允许使用小数点,也不能以小数点结尾或以小数点开头。

我该如何解决?

最佳答案

在正则表达式的末尾添加$以强制匹配完整字符串。现在,它仅匹配部分字符串,因此它错误地接受了在末尾添加了垃圾的有效程序包名称。

10-06 03:47