[Solucionado]Duda con regex

Iniciado por .:UND3R:., 25 Noviembre 2013, 21:18 PM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

Qué expresión regular debería filtrar una string para que me queden solo números y guiones de la siguiente forma:
00-123-456-789 o 00123456789

pero no esto:
00-123--457-789
-00-123-456-789-
-00123456789-
00-123-456-789-

Solo números y guiones, estos no deberían repetirse ni estar en los extremos

Código (java) [Seleccionar]
       String regex = ?????????
       String test = "123asd--asd-12312-asd-11-1333-122";
       System.out.println(test.replaceAll(regex, test));


Gracias

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

csp

La longitud de las cadenas es la misma que pusiste en los ejemplos, en esos formatos? O es solo a modo de explicación?

.:UND3R:.

entre guiones puede ir cualquier cantidad de dígitos, muchas gracias por tu interés

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Shell Root

y puede haber n cantidad de guiones?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

.:UND3R:.

efectivamente, intentaré detallar:
Sólo puede constar de números y guiones (-)
No pueden haber guiones al inicio y al final, ejemplo:
-10101-123123
191919-23123-
-34534-1233-
-123-
etc.

No se pueden repetir guiones:
1234--123

Debe tener n números entre medio de cada guión y n guiones

uff listo jeje

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

csp

Fijate con esta a ver si hace lo que necesitás:

Código (java) [Seleccionar]
^[\d]+(\-?\d)*

.:UND3R:.

#6
Me marca un error:

Código (java) [Seleccionar]
String test = "123asd--asd-12312-asd-11-1333-122";
       System.out.println(test.replaceAll("^[\d]+(\-?\d)*", "vv"));


¿ A qué se puede deber esto?

Gracias nuevamente

PD: soy nuevo con esto de expresiones regulares y su uso (es un caso de necesidad puntual)

EDIT: Utilizo netbeans y me marca que la string presenta ilegal scape character

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

csp

La verdad no te sabría responder el porque del error (Recién estoy comenzando a aprender Java), pero intentá de la siguiente manera:

Código (java) [Seleccionar]
^[\\d]+(\\-?\\d)*

.:UND3R:.

Ahí ha funcionado, aunque no cumple con lo que me gustaría que hiciera, he aquí la entrada y luego la salida:

Entrada:

123asd--asd-12312-asd-11-1333-122

Salida:

asd--asd-12312-asd-11-1333-122

Solo elimino el primer caracter, debería quedar:

123-12312-11-1333-122

A ver que se puede hacer muchas gracias

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Danyfirex

se me ocurrió algo así:



Código (java) [Seleccionar]
test.replaceAll("([^\d]+){1,3}", "-")


no lo probé.

saludos