¿Cuál es la expresión regular de. y ...?expresión regular para DOT
if(key.matches(".")) {
do something
}
Las coincidencias aceptan cadenas que solicitan una expresión regular. Ahora necesito eliminar todos los DOT dentro de mi MAP.
¿Cuál es la expresión regular de. y ...?expresión regular para DOT
if(key.matches(".")) {
do something
}
Las coincidencias aceptan cadenas que solicitan una expresión regular. Ahora necesito eliminar todos los DOT dentro de mi MAP.
. coincide con cualquier carácter tanto necesita escapar decir \.
o \\.
dentro de una cadena de Java (porque \
en sí tiene un significado especial dentro de cadenas de Java.)
continuación, puede utilizar \.\.
o \.{2}
a coincidir exactamente con 2 puntos.
...
[.]{1}
o
[.]{2}
?
solo punto es que todos los personajes no creen? –
[+ * ?.] La mayoría de los caracteres especiales no tienen significado dentro de los corchetes. Esta expresión coincide con cualquiera de +, *,? o el punto.
Use String.Replace()
si solo quiere reemplazar los puntos de la cadena. Alternativa sería usar Pattern-Matcher
con StringBuilder
, esto le da más flexibilidad ya que puede encontrar grupos que están entre puntos. Si usa este último, le recomendaría que ignore las entradas vacías con "\\.+"
.
public static int count(String str, String regex) {
int i = 0;
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
m.group();
i++;
}
return i;
}
public static void main(String[] args) {
int i = 0, j = 0, k = 0;
String str = "-.-..-...-.-.--..-k....k...k..k.k-.-";
// this will just remove dots
System.out.println(str.replaceAll("\\.", ""));
// this will just remove sequences of ".." dots
System.out.println(str.replaceAll("\\.{2}", ""));
// this will just remove sequences of dots, and gets
// multiple of dots as 1
System.out.println(str.replaceAll("\\.+", ""));
/* for this to be more obvious, consider following */
System.out.println(count(str, "\\."));
System.out.println(count(str, "\\.{2}"));
System.out.println(count(str, "\\.+"));
}
La salida será:
--------kkkkk--
-.--.-.-.---kk.kk.k-.-
--------kkkkk--
21
7
11
Debe utilizar no contiene partidos
if(nom.contains("."))
System.out.println("OK");
else
System.out.println("Bad");
\. no funciona con el código anterior en key.matches – John
Como se mencionó, '\ .' es la expresión regular, pero para construir una cadena para esta expresión en Java necesitará' \\. 'porque \ se usa dentro de cadenas Java para cosas como \ n, \ t etc. entonces \\ es necesario para un literal \ dentro de una Cadena. Además, tenga en cuenta que 'String.matches' requiere la expresión regular para que coincida con la ** cadena ** completa. Si desea hacer una búsqueda de subcadenas, necesitará usar 'Matcher.find' – mikej
Además, ¿puede aclarar un poco los requisitos? Si solo necesita comprobar si la clave contiene un punto, puede usar 'key.contains' y realmente no necesita una expresión regular. – mikej