更新2

每个标识符必须至少包含一个字符。

必须从以下字符中选择第一个字符:字母,下划线或美元符号。第一个字符不能是数字。

其余字符(除第一个外)可以来自:字母,数字,下划线或美元符号。换句话说,它可以是任何有效的标识符字符。

简而言之,标识符是从字母,数字,下划线或美元符号中选择的一个或多个字符。唯一的限制是第一个字符不能是数字。

所以,你最好使用

String pattern = "(?:\\b[_a-zA-Z]|\\B\\$)[_$a-zA-Z0-9]*+";

更新

所以,你可以使用

String pattern = "\\b[_a-zA-Z][_a-zA-Z0-9]*\\b";

注意它允许_______。

您可以使用

String p = "\\b_*[a-zA-Z][_a-zA-Z0-9]*\\b";

为了避免这种情况。请参阅IDEONE demo。

String s = "(identifier1 identifier_2 23 4) ____ 33";

String p = "\\b_*[a-zA-Z][_a-zA-Z0-9]*\\b";

System.out.println(s.replaceAll(p, "$0#"));

输出:(identifier1# identifier_2# 23 4) ____ 33

OLD ANSWER

您可以使用以下模式:

String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]+)*\\b";

或(如果_可以出现在最后):

String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]*)*\\b";

模式要求整个单词(因为表达式用单词边界\b括起来)不应该等于数字(用(?!\d+\b)检查),以及展开的部分{{ 1}}匹配非下划线字符块,后跟零序或多个下划线序列,后跟非下划线字符块。

[A-Za-z0-9]+(?:_[A-Za-z0-9])*

输出:String s = "(identifier1 identifier_2 23 4) ____ 33";

String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]*)*\\b";

System.out.println(s.replaceAll(p, "$0#"));

java正则表达式下划线_用于标识符的Java正则表达式(字母,数字和下划线)相关推荐

  1. java 正则表达式的包_用于Java包名称的Python正则表达式

    我在使用 Python确定有效的Java包名称时遇到问题.这是代码: packageName = "com.domain.lala" # valid, not rejected - ...

  2. c语言规定 标识符由,【填空题】C语言的标识符命名规则规定标识符可以由字母数字和下划线组成,首字符不能是 。 (4.0分)...

    [填空题]C语言的标识符命名规则规定标识符可以由字母数字和下划线组成,首字符不能是 . (4.0分) 更多相关问题 鱼苗池的选择要利于鱼苗生长.利于饲养管理和()A. 鱼苗游动B. 水生生物生长C. ...

  3. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

    java 数字 下划线 JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始, ...

  4. java判断颜色合法_判断颜色是否合法的正则表达式(详解)

    判断颜色是否合法的正则表达式(详解) "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; 意思是:以#开头,后面是数字和a-f的字符(大写或小写),这个值是 ...

  5. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

  6. java list e 查找_源码(04) -- java.util.ListE

    java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...

  7. java面试32问_学员分享:JAVA面试32问(11-20)

    第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;有错,s1是shor ...

  8. java主要内存区域_可能是把Java内存区域讲的最清楚的一篇文章

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄 ...

  9. java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

最新文章

  1. Nature撤稿!三年前微软在量子计算上的巨大胜利终究是个错误
  2. 学习笔记 mysql_MySQL 学习笔记
  3. 途牛网站无线架构变迁实践
  4. 超详细百家大厂面试资料,免费送!
  5. BZOJ2956 (模积和)
  6. C和指针之数组编程练习5 (矩阵相乘)
  7. Angular实现dialog对话框封装
  8. Solaris11 磁盘分区
  9. Struts2第三篇【Action开发方式、通配符、Struts常量、跳转全局视图、action节点默认配置】...
  10. Java学完哪些内容能够出去找工作
  11. c语言mergesort 参数,求教关于归并排序MergeSort()的问题
  12. CISSP国际注册信息系统安全专家
  13. 微信小游戏是个人尝试做游戏最好的选择
  14. java 向量 内积_向量内积外积
  15. Makefile与前缀后缀相关函数suffix、basename、addsuffix、addprefix
  16. 怎么记账,记录日常收支
  17. 用python画皮卡丘的代码-利用Python绘制萌萌哒的皮卡丘
  18. html的slider位置调整,ios设置UISlider的起始位置和增量
  19. Golang 在linux中新建用户
  20. Life Long Learning论文阅读记录之LwF

热门文章

  1. 平板N710无限重启解决办法——包括恢复出厂设置的办法
  2. 计算机考研1000题pdf,2020考研张宇1000题(数一、二、三全).pdf
  3. 微信首页登录html页面,H5页面接入微信授权登录和分享
  4. python优秀代码写法笔记
  5. IoU(Intersection over Union)
  6. 关于使用Intellij Idea时java系统找不到指定文件的解决方案
  7. Oracle中有dateadd吗,oracle dateadd的函数有哪些?
  8. 高性能架构学习路线图-分布式架构演进
  9. 全款房抵押贷款要注意什么?
  10. Office 365 批量创建用户