Java 我们可以在没有循环语句的情况下(通过正则表达式)计算字符串中的数字表达式吗?

Java 我们可以在没有循环语句的情况下(通过正则表达式)计算字符串中的数字表达式吗?,java,regex,string,Java,Regex,String,jdk7。 什么是正则表达式处理str1并得到所有内部数字平方的方法 String str1="ab cd 2 4 ef 12x"; ... System.out.println(str1.replaceAll("...", "...")); 我们能把控制台拿出来吗 ab cd 4 16 ef 144x 没有循环使用 也许它如此复杂或不可能。。。不幸的是,我不知道。 提前谢谢。我有一个关于循环的解决方案,也许它能帮助您找到其他解决方案 String str="ab cd 2 4 ef 1

jdk7。 什么是正则表达式处理str1并得到所有内部数字平方的方法

String str1="ab cd 2 4 ef 12x";
...
System.out.println(str1.replaceAll("...", "...")); 
我们能把控制台拿出来吗

ab cd 4 16 ef 144x 
没有循环使用

也许它如此复杂或不可能。。。不幸的是,我不知道。
提前谢谢。

我有一个关于循环的解决方案,也许它能帮助您找到其他解决方案

String str="ab cd 2 4 ef 12x";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(str);

while(m.find()) {
    System.out.println(Math.pow(Integer.parseInt(m.group(1)), 2));
}
输出: 4 16
144.0

我有一个带循环的解决方案,它可能会帮助您找到其他解决方案

String str="ab cd 2 4 ef 12x";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(str);

while(m.find()) {
    System.out.println(Math.pow(Integer.parseInt(m.group(1)), 2));
}
输出: 4 16
144.0

在一个
replaceAll
调用中,甚至在两个调用中,都不可能做到这一点,因为匹配的子字符串不能动态求值(可以用Perl,但不能用Java)

因此,正如我所提到的,一种解决方法是在循环中使用
Matcher#appendReplacement

见a:


在一个
replaceAll
调用中,甚至在两个调用中都不可能做到这一点,因为匹配的子字符串不能在运行时进行计算(可以在Perl中进行计算,但不能在Java中进行计算)

因此,正如我所提到的,一种解决方法是在循环中使用
Matcher#appendReplacement

见a:


regex是关于模式匹配和字符串替换的,而不是计算。这不是Perl中有
/e
修饰符的地方。用匹配数字的正则表达式使用
Matcher#appendReplacement
,并在
while(m.find())
块中执行计算。您可以使用Streams API对所有单词/数字进行解码,对数字进行平方运算并将结果字符串连接起来。这并不构成“在字符串中计算数字表达式”。它包括在字符串中查找数字并对其应用固定的计算。regex是关于模式匹配和字符串替换,而不是计算。这不是Perl中有
/e
修饰符的地方。用匹配数字的正则表达式使用
Matcher#appendReplacement
,并在
while(m.find())
块中执行计算。您可以使用Streams API对所有单词/数字进行解码,对数字进行平方运算并将结果字符串连接起来。这并不构成“在字符串中计算数字表达式”。它包括在字符串中查找数字并对其应用固定计算。