Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/03/2013, 07:28
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Duda con expresiones regulares

Buenas:

Sigo sin saber si lo que quieres es reemplazar "nombre_de_jugador" por algo que tienes en una variable (igual que reemplazas $hand por un valor) o si lo que quieres es meter en una variable java lo que se haya escrito en lugar de "nombre_de_jugador" (es decir, tienes $hand(Juan) y quieres obtener el Juan ese dentro de una variable String.

Imagino que es lo último ...

Tu expresión regular comenzaría siendo $hand(.*) donde .* representa cualquier secuencia de caracteres y que es lo que quieres obtener

Hay que escapar el $ y los ( ) por ser caracteres especiales en las expresiones regulares, así que quedaría \\$hand\\(.*\\)

Finalmente, como quieres recuperar el valor de .* hay que meterlo entre paréntesis para poder recogerlo luego, quedaría \\$hand\\((.*)\\)

El código java quedaría

Código java:
Ver original
  1. Pattern patron = Pattern.compile("\\$hand\\((.*)\\)");
  2. Matcher matcher = patron.matcher(tuComandoBukkit);
  3.  
  4. // Hace que Matcher busque los trozos.
  5. matcher.find();
  6.  
  7. // Aquí saldría el nombre_de_usuario
  8. System.out.println(matcher.group(1));

Si pones más grupos de paréntesis, serían group(1), group(2), etc en el orden que los hayas puesto.

Si lo que quieres es reemplazar el $hand(nombre_de_jugador) entero y sin saber el nombre del jugador, en el replace pon esto

replaceFirst("\\$hand\\(.*\\)", Integer.toString(player.getItemInHand().getTypeId( )))

debes usar replaceFirts() o replaceAll() porque admiten una expresión regular como primer parámetro.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 28/03/2013 a las 07:34