假设我有以下字符串:
mya!phaNum3rics-456-456-lll
zzzz-6a6-6a6-lll
vvvv-4-4-lll
这些被视为匹配因为" second"和#34;第三"组重复,最后一组以lll
结尾。正则表达式允许第二个和第三个"组中的任何字符序列"。
如果以下内容也被视为匹配,会有多大差异?
zasdfdf-zadezz-6a6-6a6-lll
"第三到最后一组"重复#34;倒数第二组"以" group"结尾lll
。
答案 0 :(得分:1)
你需要
-([^-]+)-\1-lll$
请参阅regex demo
-
- 连字符([^-]+)
- 第1组捕获除-
-
- 连字符\1
- backreference到捕获到第1组的文本-lll
- 文字字符的子字符串$
- 字符串结束。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
一起使用的相同正则表达式的变体:
if (str.matches(".*-([^-]+)-\\1-lll")) {
System.out.println(str + " matched!");
}