首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java模式中具有重复组的正则表达式

Java模式中具有重复组的正则表达式
EN

Stack Overflow用户
提问于 2016-10-19 18:13:43
回答 1查看 1.2K关注 0票数 0

假设我有以下字符串:

代码语言:javascript
复制
mya!phaNum3rics-456-456-lll
zzzz-6a6-6a6-lll
vvvv-4-4-lll

这些被认为是匹配的,因为“第二”和“第三”组重复,最后一组以lll结尾。什么regex将允许在第二个和第三个“组”中的任何字符序列。

如果以下内容也被认为是匹配的,那么有多大的不同?

代码语言:javascript
复制
zasdfdf-zadezz-6a6-6a6-lll

“第三组到最后一组”以“第二组到最后一组”重复,以“组”lll结尾。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 16:51:06

你需要

代码语言:javascript
复制
-([^-]+)-\1-lll$

regex演示

  • - -a连字符
  • ([^-]+) -第1组捕获-以外的一个或多个符号
  • - -a连字符
  • \1 --捕获到第1组的文本的反向引用
  • -lll -文字字符的子字符串
  • $ -字符串的末端。

Java演示

代码语言:javascript
复制
String str = "mya!phaNum3rics-456-456-lll";
Pattern ptrn = Pattern.compile("-([^-]+)-\\1-lll$");
Matcher matcher = ptrn.matcher(str);
if (matcher.find()) {
    System.out.println(matcher.group(0) + " matched!");
}

用于.matches的同一正则表达式的一个变体

代码语言:javascript
复制
if (str.matches(".*-([^-]+)-\\1-lll")) {
    System.out.println(str + " matched!");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40138734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档