其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

java正则表达式(关于向后匹配)

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篇---第十三章:字符串

课程重点:

  • 正则表达式简单理解
  • 正则表达式的简单使用

14.1. 正则表达式的简介

14.1.1. 正则表达式的简介

正则表达式, 不是Java特有的。 是一套独立的, 自成体系的知识点。 在很多语言中, 都有对正则的使用。

正则表达式, 使用来做字符串的校验、匹配的, 其实正则只有一个作用: 验证一个字符串是否与指定的规则匹配。

但是, 在很多的语言中, 都在匹配的基础上, 添加了其他的功能。 例如Java: 在匹配的基础上, 还添加了 删除、替换... 功能

14.1.2. 正则表达式的使用

实现相同的功能, 用String、StringBuffer、StringBuilder可以实现, 用正则表达式也可以实现。

但是在实现过程中, 复杂程度是完全不一样的。

标签:

提交需求或反馈

Demand feedback