gpt4 book ai didi

Java 正则表达式替换为捕获组

转载 作者:IT老高 更新时间:2023-10-28 13:51:26 26 4
gpt4 key购买 nike

有没有办法用捕获组的修改内容替换正则表达式?

例子:

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher(text);
resultString = regexMatcher.replaceAll("$1"); // *3 ??

我想用 $1 乘以 3 替换所有出现的事件。

编辑:

好像出了点问题:(

如果我使用

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll(regexMatcher.group(1));
} catch (Exception e) {
e.printStackTrace();
}

它抛出一个 IllegalStateException: No match found

但是

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll("$1");
} catch (Exception e) {
e.printStackTrace();
}

工作正常,但我无法更改 $1 :(

编辑:

现在,它正在工作:)

最佳答案

怎么样:

if (regexMatcher.find()) {
resultString = regexMatcher.replaceAll(
String.valueOf(3 * Integer.parseInt(regexMatcher.group(1))));
}

要获得第一个匹配项,请使用 #find()。之后,您可以使用 #group(1) 来引用此第一个匹配项,并将所有匹配项替换为第一个 maces 值乘以 3。

如果你想用匹配的值乘以 3 替换每个匹配:

    Pattern p = Pattern.compile("(\\d{1,2})");
Matcher m = p.matcher("12 54 1 65");
StringBuffer s = new StringBuffer();
while (m.find())
m.appendReplacement(s, String.valueOf(3 * Integer.parseInt(m.group(1))));
System.out.println(s.toString());

您可能需要查看 Matcher's documentation ,其中详细介绍了这一点以及更多内容。

关于Java 正则表达式替换为捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277157/

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