[RESOLVIDO] Expressão Regular procurar String "completa"

7 respostas
R

Pessoal,

Basicamente, o que preciso é de alguma forma de tratar uma string do jeito que ela está escrita, ignorando os caracteres especiais.

Preciso trocar a String “${root}” pela raiz de um SO especifico. Mas ao usar o replace de String, está dando o seguinte erro:

Exception in thread “main” java.util.regex.PatternSyntaxException: Illegal repetition near index 0

${root}

at java.util.regex.Pattern.error(Unknown Source)

at java.util.regex.Pattern.closure(Unknown Source)

at java.util.regex.Pattern.sequence(Unknown Source)

at java.util.regex.Pattern.expr(Unknown Source)

at java.util.regex.Pattern.compile(Unknown Source)

at java.util.regex.Pattern.(Unknown Source)

at java.util.regex.Pattern.compile(Unknown Source)

Estudando para a certificação eu vi uns problemas básicos relacionados aos metacaracteres, onde apenas precisamos adicionar algumas barras…

Ex.: para tratarmos o ponto como o “caracter ponto” ao inves de o “metacaracter ponto”, devemos colocar “\.”, pois se colocarmos “.” estaremos procurando por qualquer caractere.

Mas para uma String completa, como faria isso? Tem como escapar uma string completa, ao invés de apenas um caracter?

7 Respostas

T

Acabei de responder isso agora. Você pode usar “Pattern.quote”, ou então pôr um “\Q” no começo e um “\E” no fim da string. (Use Pattern.quote de preferência, a menos que esteja usando o Java 1.4.)

R

Legal!!

Sabia que deveria existir uma solução mas não sabia como seria, nem consegui pesquisar direito pois não sabia nem que tags de busca utilizar. Como demonstrei no próprio nome do tópico hehehe

Funcionou com o Pattern.quote(""). Valeu!!

T

Para esse tipo de coisa nada substitui a leitura minuciosa do Javadoc. Veja:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

R

duplicado @@

sorry

R

:oops:

concordo que devemos sempre olhar o javadoc, mas nesse caso em particular eu não sabia nem por o que procurar…

precisaria de uma contextualização para explicar o que eu estava precisando e o ctrl+f do browser não tem essa funcionalidade, por isso recorri ao guj.

(sem contar que eu tava usando um método da classe String, onde a explicação do erro estava na classe Pattern… kd o encapsulamento da sun huhuhu)

T

thingol:
Para esse tipo de coisa nada substitui a leitura minuciosa do Javadoc. Veja:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

Bom, eu não quis dar uma bronca. (Eu li e reli essa página do javadoc e ainda tem coisas, principalmente os padrões “greedy”, que não estão explicadas direito lá - você tem de olhar em outros sites para conseguir entender melhor). De fato a solução ao seu problema não pode ser achada facilmente no Google.

R

eu interpretei errado então…
desculpe-me por qualquer coisa e obrigado pela ajuda. :wink:

Criado 13 de setembro de 2007
Ultima resposta 13 de set. de 2007
Respostas 7
Participantes 2