gpt4 book ai didi

Java正则表达式查找特定子串出现n次

转载 作者:行者123 更新时间:2023-11-29 08:43:26 26 4
gpt4 key购买 nike

我有一个字符串,字母后跟数字 (1-4)。例如

String input = "A1 B1 P3 D1 D2 D3 D4 F3 F3 Z1 Z2 Z3 Z4 P2";

我想找到具有连续方式包含所有 4 个数字(1 到 4)的字母表的字符串。在上面的示例中,它是 D1 D2 D3 D4Z1 Z2 Z3 Z4

有什么可能的方法可以让我们在 Java 中使用 RE 来匹配它吗?

最佳答案

是的,您可以使用反向引用来做到这一点。

这是一个完全可执行的程序:

import java.util.regex.*;
public class Four {
static String input = "A1 B1 P3 D1 D2 D3 D4 F3 F3 Z1 Z2 Z3 Z4 P2";
static Pattern four = Pattern.compile("([A-Z])1 \\12 \\13 \\14");
public static void main(String[] args) {
Matcher m = four.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}
}
}

输出

D
Z

你要找的正则表达式是

([A-Z])1 \\12 \\13 \\14"

匹配

  • 首先,大写字母 A 到 Z
  • 后跟一个 1
  • 然后是空格
  • 然后,\1 一个反向引用,匹配在第一 组括号中匹配的字符串的内容。因此,如果您之前有 D1,则 \1 匹配 D
  • 接下来,数字 2
  • (继续选择 3 和 4)。

如果您的用例允许,您可能希望将单个空格替换为 \\s+,这意味着一个或多个空格字符。

编辑

group(1) 选取括号内匹配的值。如果将其更改为 group(0),您将选取整个匹配的字符串,然后程序将输出

D1 D2 D3 D4
Z1 Z2 Z3 Z4

关于Java正则表达式查找特定子串出现n次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com