¿Cómo volver a escribir el patrón [a-zA-Z0-9!$* \t\r\n]
para que coincida con el guión junto con los caracteres existentes?¿Cómo hacer coincidir los guiones con la expresión regular?
Respuesta
Escape the hyphen.
[a-zA-Z0-9!$* \t\r\n\-]
ACTUALIZACIÓN:
No importa que esta respuesta - que puede añadir el guión para el grupo, pero que no tiene que escapar de ella. Ver Konrad Rudolph's answer en su lugar, que hace un trabajo mucho mejor de responder y explica por qué.
Completamente innecesario. –
Oh, ¿o sí? ¿Eso es porque está en un grupo de personajes? Mi error. –
@KonradRudolph Tiene razón, pero no estoy seguro de que la versión no escamada sea más fácil de entender. Los dos posibles usos de dash son confusos, esta es la razón por la cual hay preguntas sobre esto para empezar. Ciertamente es más elegante una vez que lo sabes, pero para los principiantes es un poco confuso. –
¿Esto es lo que estás buscando?
MatchCollection matches = Regex.Matches(mystring, "-");
El guión suele ser un carácter normal en las expresiones regulares. Solo si está en una clase de caracteres y entre otros dos caracteres, toma un significado especial.
Por lo tanto:
[-]
coincide con un guión.[abc-]
coincide cona
,b
,c
o un guión.[-abc]
coincide cona
,b
,c
o un guión.[ab-d]
partidosa
,b
,c
od
(sólo aquí el guión indica un intervalo de caracteres).
@rrr ¿Desea que él lo escriba así como también lo deletree? Todo lo que necesita hacer es agregar el guión al grupo. –
@rrrr: Creo que he dado una respuesta. La pregunta era "cómo escribir 'X' ..." y creo que he explicado cómo hacer exactamente eso. Tomar mi respuesta y aplicar la explicación a la expresión actual no debería requerir más habilidades cognitivas de las que se requieren para un alumno de primer grado. De hecho, esto es * exactamente * lo que los estudiantes de primer grado aprenden cuando se les enseña la aritmética básica. Siéntete libre de corregir mi suposición. –
[Hyphen se toma literalmente desde el interior de una clase de caracteres, si no puede formar un rango] (http://stackoverflow.com/questions/29458636/how-does-this-pattern-match-hyphen-without-escape). – MAKZ
Es menos confuso usar siempre un guión escapado, para que no tenga que depender posicionalmente. Eso es \-
dentro de la clase de caracteres entre corchetes.
Pero hay algo más que considerar. Algunos de esos caracteres enumerados posiblemente deberían escribirse de manera diferente. En algunas circunstancias, definitivamente deberían.
Este comparison de sabores regex dice que C♯ puede usar algunas de las propiedades Unicode más simples. Si está tratando con Unicode, probablemente debería usar la categoría general \p{L}
para todas las letras posibles, y quizás\p{Nd}
para números decimales. Además, si desea acomodar toda la puntuación de ese guión, no solo HYPHEN-MINUS, debe usar la propiedad \p{Pd}
. También es posible que desee escribir esa secuencia de caracteres en espacios en blanco simplemente como \s
, suponiendo que no sea demasiado general para usted.
En conjunto, eso funciona en un apattern de [\p{L}\p{Nd}\p{Pd}!$*]
para que coincida con cualquier carácter de ese conjunto.
Probablemente usaría eso de todos modos, incluso si no planeaba tratar con el conjunto Unicode completo, porque es un buen hábito para entrar, y porque estas cosas a menudo crecen más allá de sus parámetros originales. Ahora, cuando lo levante para utilizarlo en otro código, seguirá funcionando correctamente. Si codificas todos los caracteres, no será así.
Tiendo a estar de acuerdo con esta respuesta, cuanto menos necesite saber, más seguro será el código. Esto me recuerda los problemas de las prioridades del operador: http://stackoverflow.com/questions/10007140/operator-precedence-and-ternary-operator, prefiero tener paréntesis en ellos (agregado automáticamente por mi IDE), sin necesidad de conocerlos a todos. . Usted u otra persona pueden echar a perder tarde o temprano. Por supuesto, si trabajas mucho con expresiones regulares en tus proyectos, es posible que necesites tener conocimientos más avanzados. –
utilice "\ p {Pd}" sin comillas para que coincida con cualquier tipo de guión.El carácter '-' es solo un tipo de guión que también es un personaje especial en Regex.
[-a-z0-9] +, [a-z0-9 -] +, [az-0-9] + y también [az-0-9] + todos son iguales.El guión entre dos rangos considerados como un símbolo. Y también [a-z0-9 - +()] + esta expresión regular permite el guión.
- 1. Coincidir con la expresión regular
- 2. Cómo hacer coincidir varias palabras en la expresión regular
- 3. Expresión regular para hacer coincidir los caracteres ASCII y Unicode
- 4. Expresión regular para reemplazar espacios con guiones
- 5. Expresión regular para hacer coincidir las URL en Java
- 6. expresión regular para que coincida con todo, excepto las palabras dadas (que puede incluir guiones/guiones)
- 7. Cómo hacer coincidir con la expresión regular "partido más corto" en .NET
- 8. Expresión regular para coincidir con la sintaxis SQL común?
- 9. hacer caracteres opcionales en la expresión regular
- 10. ¿Cómo hacer coincidir los subdirectorios en RewriteCond?
- 11. expresión regular para coincidir alternando letras en
- 12. Expresión regular para coincidir con el apodo IRC
- 13. Expresión regular para hacer coincidir la cadena que comienza con "detener"
- 14. ¿Cómo hacer coincidir el alfabeto internacional (inglés a-z, + no inglés) con una expresión regular?
- 15. Cómo hacer coincidir una cadena de cierta longitud con una expresión regular
- 16. expresión regular para coincidir con un CSS propiedad individual
- 17. Expresión regular de Java para hacer coincidir todos los caracteres de _all_ whitespace
- 18. Coincidir cadenas con expresión regular en caso de ignorar
- 19. ¿Cómo hacer coincidir la expresión regular en el índice de inicio?
- 20. Expresión regular: cómo hacer coincidir una cadena que contenga "\ n" (nueva línea)?
- 21. La expresión regular Lookbehind no funciona con los cuantificadores ('+' o '*')
- 22. expresión regular para coincidir líneas que no contengan una palabra
- 23. Cómo hacer coincidir un símbolo de libra (#) en una expresión regular en php (para hashtags)
- 24. ¿Cómo hacer coincidir, pero no capturar, parte de una expresión regular?
- 25. Regex cómo hacer coincidir un carácter opcional
- 26. expresión regular todos los caracteres excepto último
- 27. expresión regular de Python con los codones
- 28. Java: expresión regular para hacer coincidir una barra invertida seguida de una comilla
- 29. Expresión regular para los números sin ceros a la izquierda
- 30. Coincidir expresión regular de un diccionario en C#
en lugar de agregar el espacio y \ t puede agregar \ s. \ s coincide también con otros tipos de espacios en blanco –