Yo estaba tratando de código para permitir que ciertos caracteres especiales en una cadena utilizando java.util.regex.Matcher y java.util.regex.Pattern pero esto no es la eliminación de subrayado del mismo. Soy nuevo aqui. Necesito ayuda en esto. extracto de código de abajo:
// String to be scanned to find the pattern.
String line = "This order was _:$ placed for QT3000! OK?";
String pattern = "[^\\w\\s\\-?:().,'+\\/]";
String s = null;
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
s= m.replaceAll("");
System.out.println("Output: " + s);
Esperado: Esta orden fue: situado para QT3000 OK? Real: Esta orden fue _: situado para QT3000 OK?
El \w
patrón coincide con guiones y [^\w]
coincide con cualquier carbón, pero las letras, dígitos y un guión bajo.
Reemplazar con \p{Alnum}
:
String pattern = "[^\\p{Alnum}\\s?:().,'+/-]";
Nota pongo el guión al final de la clase de caracteres a fin de no escapar de ella y quitar el escape \
de la /
ya que no es un meta-carácter especial de expresiones regulares.
Vea la demostración de expresiones regulares de Java .
El [^\\p{Alnum}\\s?:().,'+/-]
patrón coincide con cualquier carbón, pero:
\p{Alnum}
- alfanumérica[a-zA-Z0-9]
\s
- espacios en blanco?
- un signo de interrogación:
- dos puntos(
- un(
símbolo)
- un)
símbolo.
- un punto,
- en el apartado'
- una comilla+
- a más/
- una barra inclinada-
- un guión.