Java 字符串替换(String.replaceAll):使用不同的匹配和替换条件

3

I have this code:

String polynomial = "2x^2-4x+16";
String input = polynomial.replaceAll("[0-9a-zA-Z][-]", "+-");

问题是我不想实际替换[0-9a-zA-Z]字符。
以前,我使用了polynomial.replace("-","+-");,但这会导致负幂的输出不正确。
新标准[0-9a-zA-Z][-]解决了负幂问题; 然而,它会替换一个字符,而我只需要在-前面插入+而不删除该字符。
如何使用已移除的字符替换此模式:
polynomial.replaceAll("[0-9a-zA-Z][-]", c+"+-");

'c' 代表 [0-9a-zA-Z] 字符。


你想做什么?只需提供示例输入和输出即可。没有上下文信息,关于你的尝试的所有信息都是无意义的。 - Bohemian
1个回答

4
您可以使用群组来实现此功能:
polynomial.replaceAll("([0-9a-zA-Z])[-]", "$1+-");

$1 指的是括号中的第一个内容。

Java 正则表达式参考手册


在这里它说反向引用是通过\1、\2、...\n实现的,而不是$1。我不知道$1等是否可行,但我想提一下。 - MadDogMcNamara
1
@MadDogMcNamara,\1用于正则表达式内部的组引用,而$1用于replace...中的组引用(从String.replaceAll的一些链接可以跳转到这里)。 - Bernhard Barker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接