Regex – ¿Se deberían escapar los guiones?

Posible duplicado:
¿Cómo hacer coincidir los guiones con la expresión regular?

Hyphen es un personaje especial en expresiones regulares, por ejemplo, para seleccionar un rango, podría hacer algo como:

[0-9A-F] 

Pero fuera de los corchetes, es solo un personaje normal ¿no? He probado esto en un par de probadores de expresiones regulares en línea, y los guiones parecen funcionar como un carácter normal fuera de corchetes (o incluso dentro de corchetes si no está entre dos caracteres, por ejemplo, [-g] parece coincidir – ob) si ha escapado o no. No pude encontrar la respuesta a esto, pero me pregunto si es convencional o no escapar de los guiones.

¡Gracias!

Correcto en todos los frentes. Fuera de una clase de caracteres (así se llaman los “corchetes”), el guión no tiene ningún significado especial, y dentro de una clase de caracteres, puede colocar un guión como el primer o último carácter en el rango (por ejemplo, [-az] o [0-9-] ), O escape (por ejemplo [az\-0-9] ) para agregar “guión” a su clase.

Es más común encontrar un guión colocado primero o último dentro de una clase de personaje, pero de ninguna manera serás linchado por hordas de colmillos furiosos por elegir escapar de él.

(En realidad … mi experiencia ha sido que mucha gente de regex es empleada por gente que no asimila completamente la syntax. En estos casos, normalmente verás todo lo que escapó (ej. [az\%\$\#\@\!\-\_] ) simplemente porque el ingeniero no sabe lo que es “especial” y lo que no … así que “juegan a lo seguro” y oscurecen la expresión con montones de barras invertidas excesivas. Lo hará usted mismo, sus contemporáneos, y su posteridad un gran favor al tomarse el tiempo para comprender realmente la syntax de expresiones regulares antes de usarlo).

Gran pregunta!

Fuera de las clases de caracteres, es convencional no escapar de los guiones. Si veía un guión escapado fuera de una clase de personaje, eso me sugeriría que fue escrito por alguien que no estaba muy cómodo con las expresiones regulares.

Dentro de las clases de personajes, no creo que una forma sea convencional sobre la otra; en mi experiencia, usualmente parece ser el primero o el último, como en [-._:] o [._:-] , para evitar la barra invertida; pero a menudo también lo he visto escapado, como en [._\-:] , y no llamaría a eso algo convencional.

Normalmente, siempre colocaría el guión primero en la sección de coincidencia [] . Por ejemplo, para unir cualquier alfanumérico que incluya guiones (escrito a lo largo del camino), usaría [-a-zA-Z0-9]