gpt4 book ai didi

java - 使用捕获的正则表达式组作为方法的参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:58 27 4
gpt4 key购买 nike

通常,在使用正则表达式时,我可以使用 $ 运算符引用捕获的组,如下所示:

value.replaceAll("([A-Z])", "$1"); 

我想知道的是,是否有可能以某种方式在方法调用中使用捕获的值,然后用方法的返回值替换该组,如下所示:

value.replaceAll("([A-Z])", foo("$1"));

按上面的方法不行,不出所料传入的字符串不是捕获组而是字符串"$1"

有什么方法可以将捕获的值用作某些方法的参数吗?可以吗?

最佳答案

是的,这是可能的,但您不能使用 $1 结构,正如您正确指出的那样。

为此,您最好的选择是使用 PatternMatcher

举个例子来说明:

import java.util.regex.*;

public class Test {

public static String foo(String str) {
return "<b>" + str + "</b>";
}

public static void main(String[] args) {
String content = "Some Text";
Pattern pattern = Pattern.compile("[A-Z]");
Matcher m = pattern.matcher(content);

StringBuffer sb = new StringBuffer();

while (m.find())
m.appendReplacement(sb, foo(m.group()));

m.appendTail(sb);

System.out.println(sb);
}
}

输出:

<b>S</b>ome <b>T</b>ext

关于java - 使用捕获的正则表达式组作为方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5183129/

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