我在使用 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正则表达式的更多相关文章

  1. ios – 在Swift中_:_:和冒号和下划线的类似组合是什么意思?

    那就是下划线的来源.我们可以将函数重写为:注意第一个参数不需要_,但后续的参数将是.第一个被推断为没有参数名称.这使得此调用的方法签名为sayHello,因为您作为调用者没有命名参数.更新Swift3.0:Swift3.0平等对待所有参数.第一个参数现在需要一个下划线来表示外部参数名称的缺失.在上面的示例中,在调用站点上有sayHello,您的相应函数或方法声明必须是请注意在内部参数名称“person”之前添加下划线.

  2. Swift 控制流(四)

    ControlFlow控制流For循环for-in遍历一个集合里面的所有元素,index使用前不需要声明,只需包含在循环的声明中即可[objc]viewplaincopyforindexin1...5{println("\(index)times5is\(index*5)")}//1times5is5//2times5is10//3times5is15//4times5is20//5times5i

  3. Swift - 使用下划线_来分隔数值中的数字

    为了增强较大数值的可读性,Swift语言增加了下划线来分隔数值中的数字。不管是整数,还是浮点数,都可以使用下划线来分隔数字。

  4. 为什么我需要快速的下划线?

    Here它说,“注意:_意思是”我不在乎这个价值“,但是来自JavaScript,我不明白这是什么意思。我可以获得这些功能打印的唯一方法是在参数之前使用下划线:没有下划线,我必须这样写,以避免任何错误:我不明白这个下划线的用法。什么时候,如何以及为什么要使用这些下划线?不同用例有几个细微差别,但通常下划线意味着“忽略这个”。当声明一个新功能时,下划线告诉Swift在调用时该参数不应该没有标签–这是

  5. Android Spinner下划线颜色

    我可以使用style=“@style/Base.Widget.AppCompat.Spinner.Underlined”在spinner中添加下划线.如何仅使用样式更改下划线的颜色?我不想使用任何可绘制的文件来改变这一点.使用上面的样式,当用户点击它时,它只有下划线.它在正常状态下不会改变下划线的颜色.解决方法默认情况下,Spinner将在AppTheme中使用通过android:textColo

  6. android – 以数字开头的软件包名称的规则是什么?

    Android中的包命名约定是:但是,如果organizationName或appName以数字或下划线开头,则它将变为无效名称,因为android不接受以数字或下划线开头的单词.例如:com.1organizationName.appName无效重命名此包的惯例是什么?解决方法在官方的“NamingaPackage”java文档中,它有以下声明:Insomecases,theinternetdo

  7. 如何在EditText中删除Android自动建议下划线?

    我正在使用EditText来编写一些文本.Android的自动建议强调了这个词,直到我们达到了空间.现在,如果我输入没有空格的单词,结果文本会有下划线.这是因为我使用了Html.toHtml.现在,我会期待一些答案,例如禁用自动建议或使用view.getText().toString(),但我需要它们.我需要自动建议功能以及文本格式.解决此问题的一个示例是Gmail应用.您可以在EditText框中编写任何您想要的内容,它会发送电子邮件而不会加下划线.解决方法在getText()之前使用它.这是最直接和最

  8. js下划线和驼峰互相转换的实现(多种方法)

    本文主要介绍了js下划线和驼峰互相转换的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. vue router-link下划线和颜色问题及解决

    这篇文章主要介绍了vue router-link下划线和颜色问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  10. IOS 开发之UILabel 或者 UIButton加下划线链接

    这篇文章主要介绍了IOS 开发之UILabel 或者 UIButton加下划线链接的相关资料,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部