Products
GG网络技术分享 2025-03-18 16:15 0
文本内容截取:
private long wahaha;
第一个单词固定不变,其余两个单词均为变量
目的: 获取第三个单词
我的java正则表达式:
(?<=private\\s[a-z]+\\s).*?(?=;)
错误原因:向后匹配中不可使用+或者*
寻求各位正确的写法,如何才能获取到第三个单词?
提示:文本前后都有内容,貌似只能通过private单词和分号去锁定第三个单词
问题解决,由于java机制不允许在向后匹配中使用无限匹配,故设置一个限制即可
(?<=private\\s\\w{1,10}\\s).*?(?=;)
我想到了一个代替方案,利用枚举
(?<=private\\s(long|String|Date|List|Integer)\\s).*?(?=;)
但这并非我心目中的最佳方案
如果一条正则不能解决,就多写几条。
用split分隔成单词,再逐个单词处理。
温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣.
系列文章第一篇是拥抱大数据:凯哥带你从零学大数据系列-学习大数据前奏(必读)(点我)!
上一篇:拥抱大数据:凯哥带你从零学大数据系列之Java篇---第十三章:字符串
课程重点:
正则表达式, 不是Java特有的。 是一套独立的, 自成体系的知识点。 在很多语言中, 都有对正则的使用。
正则表达式, 使用来做字符串的校验、匹配的, 其实正则只有一个作用: 验证一个字符串是否与指定的规则匹配。
但是, 在很多的语言中, 都在匹配的基础上, 添加了其他的功能。 例如Java: 在匹配的基础上, 还添加了 删除、替换... 功能
实现相同的功能, 用String、StringBuffer、StringBuilder可以实现, 用正则表达式也可以实现。
但是在实现过程中, 复杂程度是完全不一样的。
Demand feedback