Search code examples
javaregexreplaceall

Replace String in Java with regex and replaceAll


Is there a simple solution to parse a String by using regex in Java?

I have to adapt a HTML page. Therefore I have to parse several strings, e.g.:

href="/browse/PJBUGS-911"
=>
href="PJBUGS-911.html"

The pattern of the strings is only different corresponding to the ID (e.g. 911). My first idea looks like this:

String input = "";
String output = input.replaceAll("href=\"/browse/PJBUGS\\-[0-9]*\"", "href=\"PJBUGS-???.html\"");

I want to replace everything except the ID. How can I do this?

Would be nice if someone can help me :)


Solution

  • You can capture substrings that were matched by your pattern, using parentheses. And then you can use the captured things in the replacement with $n where n is the number of the set of parentheses (counting opening parentheses from left to right). For your example:

    String output = input.replaceAll("href=\"/browse/PJBUGS-([0-9]*)\"", "href=\"PJBUGS-$1.html\"");
    

    Or if you want:

    String output = input.replaceAll("href=\"/browse/(PJBUGS-[0-9]*)\"", "href=\"$1.html\"");