加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java中使用正则表达式获取第二个匹配器?

发布时间:2020-12-14 16:48:15 所属栏目:Java 来源:网络整理
导读:参见英文答案 Match at every second occurrence6个 我想在这个字符串中的 – 和_之间以正则表达式模式提取第二个匹配器: VA-123456-124_VRG.tif 我试过这个: Pattern mpattern = Pattern.compile("-.*?_"); 但是我在Java中获得了上述正则表达式的123456-1
参见英文答案 > Match at every second occurrence6个
我想在这个字符串中的 – 和_之间以正则表达式模式提取第二个匹配器:
VA-123456-124_VRG.tif

我试过这个:

Pattern mpattern = Pattern.compile("-.*?_");

但是我在Java中获得了上述正则表达式的123456-124.

我只需要124.

我怎样才能做到这一点?

解决方法

我会在这里使用正式的模式匹配器,尽可能具体.我会用这种模式:
^[^-]+-[^-]+-([^_]+).*

然后检查第一个捕获组以查找可能的匹配项.这是一个有效的代码片段:

String input = "A-123456-124_VRG.tif";
String pattern = "^[^-]+-[^-]+-([^_]+).*";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);

if (m.find()) {
   System.out.println("Found value: " + m.group(1) );
}

124

Demo

顺便说一句,有一个班轮也可以在这里工作:

System.out.println(input.split("[_-]")[2]);

但是,这里需要注意的是,它不是非常具体,可能会因您的其他数据而失败.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读