用于 Java 包名称的 Python 正则表达式

标签 python regex

我在使用 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", "", "")

包名称必须以小写字母或下划线开头,每个点后必须至少跟一个小写字母或下划线。所有其他字符可以是小写字母、数字或下划线。不允许连续使用点,并且不得以点结尾或开头。

我该如何解决?

最佳答案

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

关于用于 Java 包名称的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577250/

相关文章:

python - python 中的装饰器 - 需要解释

python - str(dict) 和 json.dumps(dict) 的区别

python - 正则表达式匹配的数量

正则表达式替换转义字符

python - 用 "\"python 替换所有 "\\"

python - selenium 没有在 FirefoxProfile 中设置 downloaddir

android - 在 kivy 应用程序中包含第三方模块时出错

python - 如何检查文件是否存在于谷歌云存储中?

html - 使用 sed 从 html 中提取 pdf

c# - 跳过正则表达式中的单词边界