user1094607
user1094607

Reputation: 147

Java String.replaceAll with different match & replace criteria

I have this code:

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

The problem is I don't want to actually replace the [0-9a-zA-Z] char.

Previously, I had used polynomial.replace("-","+-"); but that gave incorrect output with negative powers.

The new criteria [0-9a-zA-Z][-] solves the negative power issue; however it replaces a char when I only need to insert the + before the - without deleting that char.

How can I replace this pattern using the char removed like:

polynomial.replaceAll("[0-9a-zA-Z][-]", c+"+-");

where 'c' represents that [0-9a-zA-Z] char.

Upvotes: 3

Views: 1883

Answers (1)

Bernhard Barker
Bernhard Barker

Reputation: 55609

You can use groups for this:

polynomial.replaceAll("([0-9a-zA-Z])[-]", "$1+-");

$1 refers to the first thing in brackets.

Java regex reference.

Upvotes: 4

Related Questions