gpt4 book ai didi

java - 提取数据并使用 RegEx 格式化它们

转载 作者:行者123 更新时间:2023-11-30 09:52:33 25 4
gpt4 key购买 nike

我必须将三个字符串粘在一起。

我有一个输入字符串(字符串 1),我必须在(字符串 2)上运行一个正则表达式(它有组)并提取这些组以使用反向引用将它们放入模板(字符串 3)中。

一个简短的例子可以是:

input: "foo1234bar5678"
regex: ".*?(\\d*).*?(\\d*).*"
template: "answer: $1 $2"

应在“answer: 1234 5678”中展开。

我一直在使用 java.util.regex.Pattern,但我想不出用匹配器来实现这一点的方法。显然,replaceAll 不是预期的行为,append* 也不是。

有没有办法使用 android API 很好地做到这一点?

编辑:这是一个基本的实现:

public static String genOutput(String regex, String input, String template) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
if (m.find()) {
for (int i = 1; i <= m.groupCount(); i++) {
template = template.replaceAll("\\$" + i, m.group(i));
}
}
return template;
}

最佳答案

下面是我的做法:

Pattern p = Pattern.compile("(?:\\D*(\\d*)\\D*)+");
Matcher m = p.matcher(input);
if (m.find()) {
String result = "answer: ";
for (int i = 1; i < m.groupCount(); i++) {
result += m.group(i) + " ";
}
System.out.println(result);
} else {
System.out.println("Input did not match");
}

这将匹配您的字符串,然后将这两个组用作 String 格式化程序的输入。

关于java - 提取数据并使用 RegEx 格式化它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207387/

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