String com parênteses

Preciso fazer um replace numa string que contém parênteses, conforme o código abaixo:

[code]public class Testes {

public static void main(String[] args) {
String stringOriginal = "abcdefghijk ABCD (W) FGHJKL :";
String novaString;

String sequencia = "ABCD (W) FGHJKL :";
String novaSequencia = "ABCD (W) FGHJKL :" + "\n" + "complemento";

System.out.println("stringOriginal=[" + stringOriginal + "]");

novaString = stringOriginal.replaceAll(sequencia, novaSequencia);

System.out.println("novaString    =[" + novaString + "]");
}

}[/code]

Deveria resultar:
stringOriginal=[abcdefghijk ABCD (W) FGHJKL :]
novaString =[abcdefghijk ABCD (W) FGHJKL :
complemento]

Mas resulta:
stringOriginal=[abcdefghijk ABCD (W) FGHJKL :]
novaString =[abcdefghijk ABCD (W) FGHJKL :]

O sistema ignora a quebra de linha e o “complemento”.

Se eu troco ‘(W)’ por ‘-W-’, funciona. O resultado é:
stringOriginal=[abcdefghijk ABCD -W- FGHJKL :]
novaString =[abcdefghijk ABCD -W- FGHJKL :
complemento]

Então a causa do problemas são os parênteses.

Alguém sabe como faço para que o sistema entenda os parênteses como parte da string?

Parênteses são caracteres especiais para expressões regulares. Você pode fazer o seguinte:

Se estiver usando Java 5.0 ou superior, veja o método java.util.regex.Pattern.quote;
Ou então, você pode pegar a seqüência procurada, e acrescentar “\Q” no início, e “\E” no fim da seqüência, para forçar o pacote de expressões regulares a não tratar parênteses, pontos e outras coisas como caracteres especiais.

public class Testes {
    
    public static void main(String[] args) {
    String stringOriginal = "abcdefghijk ABCD (W) FGHJKL :";
    String novaString;
    
    String sequencia = "\Q" + "ABCD (W) FGHJKL :" + "\E";
    String novaSequencia = "ABCD (W) FGHJKL :" + "\n" + "complemento";
    
    System.out.println("stringOriginal=[" + stringOriginal + "]");
    
    novaString = stringOriginal.replaceAll(sequencia, novaSequencia);
    
    System.out.println("novaString    =[" + novaString + "]");
    }
}

Obrigado thingol

Funcionou!

Roberto