En Java RegEx, cómo encontrar la diferencia entre .
(punto) el meta carácter y el punto normal como lo usamos en cualquier oración. Cómo manejar este tipo de situación de otros personajes como meta demasiado ( *
, +
, \d
, ...)
150
Las soluciones propuestas por los otros miembros no funcionan para mí.
Pero encontré esto:
para escapar de un punto en Java regexp escribir
[.]
fuente
\\.
no funcionó para mí: se\.
quejó de que.
no necesita escapar,\\.
hizo pensar que era en\.
lugar de.
,\\\.
y el constructor arrojó un error,[.]
fue lo único que funcionó.\\.
dentro de un literal de cadena le da lo\.
que necesita la expresión regular para ver el punto como un punto literal en lugar del emparejador de cualquier carácter.Las expresiones regulares de estilo Perl (en las que se basa más o menos el motor de expresiones regulares de Java) tratan los siguientes caracteres como caracteres especiales:
.^$|*+?()[{\
tener un significado especial fuera de las clases de personajes,]^-\
tienen un significado especial dentro de las clases de caracteres ([...]
).Por lo tanto, debe escapar de esos (y solo esos) símbolos dependiendo del contexto (o, en el caso de las clases de caracteres, colocarlos en posiciones donde no puedan malinterpretarse).
Es posible que escapen innecesariamente otros caracteres, pero algunos motores de expresiones regulares tratarán esto como errores de sintaxis, por ejemplo
\_
, causarán un error en .NET.Algunos otros conducirán a resultados falsos, por ejemplo,
\<
se interpreta como un literal<
en Perl, peroegrep
significa "límite de palabras".Así que escribe
-?\d+\.\d+\$
para que coincida1.50$
,-2.00$
etc. y[(){}[\]]
para una clase de caracteres que coincida con todo tipo de corchetes / llaves / paréntesis.Si necesita transformar una cadena de entrada de usuario en una forma segura de expresiones regulares, use
java.util.regex.Pattern.quote
.Otras lecturas: el blog de Jan Goyvaert, RegexGuru, sobre los metacaracteres que escapan
fuente
Escapar de caracteres especiales con una barra invertida.
\.
,\*
,\+
,\\d
, Y así sucesivamente. Si no está seguro, puede escapar de cualquier carácter no alfabético, ya sea especial o no. Consulte el javadoc para java.util.regex.Pattern para obtener más información.fuente
Aquí hay un código que puede copiar y pegar directamente:
¿Y si, por error, quedan espacios antes o después de "." ¿en esos casos? Siempre es una buena práctica considerar esos espacios también.
Aquí, \\ s * está ahí para considerar los espacios y darle solo las cadenas divididas requeridas.
fuente
Quería hacer coincidir una cadena que termina con ". *" Para esto tuve que usar lo siguiente:
Un poco tonto si lo piensas: D Heres lo que significa. Al comienzo de la cadena puede haber cualquier carácter cero o más veces seguido de un punto "." seguido de una estrella (*) al final de la cadena.
Espero que esto sea útil para alguien. Gracias por la barra invertida a Fabian.
fuente
"\\.\\*$"
entonces. No es necesario que coincida con el comienzo de la cadena si no le importa.Si desea finalizar, verifique si su oración termina con ". ", Entonces debe agregar [\. \ ] $ Al final de su patrón.
fuente
Estoy haciendo una matriz básica en JGrasp y descubrí que con un método de acceso para que una matriz char [] [] use ('.') Para colocar un solo punto.
fuente