:
("dos puntos") tiene un significado especial en la expresión regular pero necesito usarlo tal cual, como [A-Za-z0-9.,-:]*
he tratado de escapar de ella, pero esto no funciona [A-Za-z0-9.,-\:]*
Cómo escribir ":" ("dos puntos") en expresiones regulares?
Respuesta
En la mayoría de las implementaciones de expresiones regulares (incluidas las de Java), :
no tiene ningún significado especial, ni dentro ni fuera de una clase de caracteres.
Su problema es muy probablemente debido al hecho de las -
actúa como un operador de rango en su clase:
[A-Za-z0-9.,-:]*
donde ,-:
coincidencias entre todos los caracteres ASCII y ','
':'
. Sin embargo, ¡tenga en cuenta que aún coincide con el literal ':'
!
Tal vez puedas probar:
[A-Za-z0-9.,:-]*
Al colocar -
al principio o al final de la clase, que coincide con el literal "-"
. Como se mencionó en los comentarios de Keoki Zee, también puede escapar del -
dentro de la clase, pero la mayoría de la gente simplemente lo agrega al final.
Una demostración:
public class Test {
public static void main(String[] args) {
System.out.println("8:".matches("[,-:]+")); // true: '8' is in the range ','..':'
System.out.println("8:".matches("[,:-]+")); // false: '8' does not match ',' or ':' or '-'
System.out.println(",,-,:,:".matches("[,:-]+")); // true: all chars match ',' or ':' or '-'
}
}
También puede escapar del guión con una barra invertida, '[a \ -z]'. –
@Keoki: cierto, aunque me parece más claro hacer tan poco escapado (escapes dobles dentro de los literales de cadenas de Java) como sea posible. Aún así, es bueno mencionar que uno también puede escapar. –
Colocar el guión al final es probablemente lo que hizo el programador anterior, lo que condujo a este error. Yo * siempre * escapo: termine el ciclo ':)' – Kobi
Colón no tiene significado especial en una clase de personaje y no necesita ser escapado. De acuerdo con the PHP regex docs, los únicos personajes que necesitan ser escapados en una clase de caracteres son los siguientes:
Todos los caracteres no alfanuméricos otra que
\
,-
,^
(al comienzo) y la de terminación]
son no especial en las clases de caracteres , pero no hace daño si se escapan.
Para obtener más información sobre las expresiones regulares de Java, consulte the docs.
No entiendo por qué esto tiene un voto negativo, ¿alguien me puede explicar lo que podría estar mal con esta respuesta, por favor? –
No voté a favor, ¿pero quizás porque vincula la documentación de expresiones regulares de PHP en una pregunta de expresiones regulares de Java? – hcpl
use \\:
en lugar de \:
.. el \
tiene un significado especial en java strings.
Si bien es cierto que la barra diagonal inversa es un carácter de escape en cadenas de Java, escapar de la barra invertida aquí no resolverá el problema, ya que ':' no es una char especial en la expresión regular de todos modos. –
tener cuidado, -
tiene un significado especial con expresiones regulares. En un []
, puede ponerlo sin problema si se coloca al final. En su caso, ,-:
se toma como de ,
a :
.
- 1. ¿Cómo comparar dos expresiones regulares?
- 2. fusionar dos expresiones regulares
- 3. Intersección de dos expresiones regulares
- 4. Python números findall expresiones regulares y puntos
- 5. Escribir un analizador para expresiones regulares
- 6. ¿Hay una DSL para escribir expresiones regulares?
- 7. cómo escribir expresiones regulares en consultas de selección de MySQL?
- 8. ¿Correspondencia de expresiones regulares entre dos cadenas?
- 9. Combinando dos expresiones regulares C++ 0x
- 10. expresiones regulares en Javascript con jQuery Contiene expresiones regulares extensión
- 11. dividido con un solo colon, pero no dos puntos dobles usando expresiones regulares
- 12. expresiones regulares en Vimscript
- 13. Expresiones regulares en J2ME
- 14. expresiones regulares (expresiones regulares), reemplace la segunda aparición en javascript
- 15. ¿Composición de expresiones regulares?
- 16. Expresiones regulares en findstr
- 17. Expresiones regulares en C
- 18. Expresiones regulares en OCaml
- 19. Expresiones regulares en Puntuación
- 20. Invertir expresiones regulares en vim
- 21. La combinación de estas dos expresiones regulares en una sola
- 22. Operador Tilde en expresiones regulares
- 23. ¿Cómo dominar las expresiones regulares?
- 24. Expresiones regulares en procedimientos almacenados
- 25. Expresiones regulares en C: ejemplos?
- 26. Expresiones regulares en SQLalchemy consultas?
- 27. Accent en expresiones regulares en Java
- 28. UTF expresiones regulares en Python
- 29. Expresiones regulares y montaje
- 30. Operaciones matemáticas en expresiones regulares
¿Quizás necesites dos barras invertidas para escapar? – Mehrdad
¿Qué estás tratando de hacer coincidir? –