2012-02-29 85 views
5

que tienen este patrón:¿Expresión regular de Java para números negativos?

Pattern.compile("T([0-9]*)");

que funciona muy bien para los números positivos, pero lo necesito para hacer también los números negativos, por ejemplo, "T-1T3T44" debería funcionar. O tal vez use espacio en lugar de 'T', así que debería funcionar para cadenas como esta: "- 1 2 3 2 -1 6 2". Lo siento, realmente no he usado expresiones regulares antes. ¿Alguna sugerencia? Gracias.

+0

http: /? /regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3 – vulkanino

+0

Lo siento, edité mi respuesta por espacio en lugar de T. – Fofole

Respuesta

5

ha pensado en tratar:

"T(-?[0-9]+)" 

Se dará cuenta de que también he cambiado el "*" (cero o más) para "+" (uno o más) desde "" no es técnicamente un número: -)

+1

Esto no es del todo correcto, ya que permite: -0. Cero no puede ser negativo Para ver cómo lidiar con eso, mira mi respuesta. – Lukasz

+0

@Fofole: sí, simplemente reemplázalo con un espacio en la expresión regular, sin problemas. Lukasz, sí, si quieres rechazar el cero negativo, necesitarás algo más complejo. Personalmente, creo que se está acercando a la etapa anal-retentiva, pero veo su punto de vista :-) – paxdiablo

+0

Gracias. Esto es más fácil de entender y realmente no necesito verificar -0 cuando construyo la cadena correctamente, así que señalo esto como la respuesta aceptada. Espero que todos estén felices por esto. – Fofole

1
Pattern.compile("T-?([0-9]*)"); 
3

Pruebe con:

Pattern.compile("T(-?[0-9]*)"); 
1

M ake el menos opcional puede ser?

T - ([0-9] *)

9
Pattern.compile("T(-{0,1}(?!0)\\d+)"); 

Tenga en cuenta el uso de negativos de preanálisis (?!0) excluir -0 número y los números que empiezan con 0.

Cuestiones relacionadas