Me gustaría usar \ w pero también coincide con los guiones bajos, así que voy con [A-Za-z] que se siente innecesariamente detallado y centrado en América. ¿Hay una mejor manera de hacer esto? Algo así como [\ w^_] (dudo que tenga esa sintaxis correcta)?¿Cuál es la mejor manera de unir solo letras en una expresión regular?
Respuesta
Usted podría utilizar /[a-z]/i
o /[[:alpha:]]/
igual de bien. De hecho, \w
incluye números para que ni siquiera funcione.
lo tomo I '' la hace sensible a las mayúsculas ? – keithjgrant
Eso es correcto. – mkb
Esto es simplemente una respuesta incorrecta. Lee abajo. –
Quizás se refiera a /[[:alpha:]]/
? Ver perlre para la discusión de clases de caracteres POSIX.
Todavía no creo que esto lleve los caracteres internacionales en consideración, ya que ': alpha:' 'sigue siendo a-zA-Z' – vol7ron
Estaba equivocado; los perldocs deben actualizarse. Sin embargo sí incluye signos de puntuación adicionales: ''"'ˎˏːˑˬˮ' – vol7ron
@ vol7tron: Tu comentario tiene una fuga ... –
[^\W0-9_]
# or
[[:alpha:]]
Ver perldoc perlre
¿Está buscando la internacionalización en su expresión regular? a continuación, tendrá que hacer algo como este chico hizo: JavaScript validation issue with international characters
coinciden explícitamente en todas las letras del lenguaje luna :)
algunas opciones:
1. /[a-z]/i # case insensitive
2. /[A-Z]/i # case insensitive
3. /[A-z]/ # explicit range listing (capital 'A' to lowercase 'z')
4. /[[:alpha:]]/ # POSIX alpha character class
le recomiendo usar ya sea el caso -insensible, o la forma verdadera /[a-zA-z]/
, a menos que tenga en mente una determinada preferencia de idioma.
Nota:
- Número 3 requiere la capital 'A' primero y luego en minúscula 'z' debido a la orden de los valores ASCII; no funciona si haces lo contrario:
a-Z
. Además: este método no cumple los criterios de subrayado, ya que incluye[\]^_ `. - Número 4 coincidirá en esos caracteres de idiomas adicionales, sino que también coincide en:
ʹʺʻˍˎˏːˑˬˮ̀́
(además de muchos otros)
El '[A-Z]' gama incluye un montón de otros personajes. – NullUserException
Tiene razón, hay algunos corchetes y caracteres adicionales, lo que rompería los criterios de no subrayar. He modificado la respuesta. @ moscas, sí, pero estaba equivocado. Realmente los dos primeros son el mismo método, solo muestra que puedes usar diferentes entradas. – vol7ron
Coincidencia de caracteres internacionales (es decir, que no son ASCII) es un poco difícil, y podría Depende de muchas cosas. Echa un vistazo a este ejemplo:
#!perl -w
use strict;
use utf8;
my $string = "ä";
print "matched :alpha:\n" if $string =~ /[[:alpha:]]/;
print "matched ^\\W0-9_\n" if $string =~ /[^\W0-9_]/;
print "matched [a-zA-Z]\n" if $string =~ /[a-zA-Z]/;
print "matched [a-z]i\n" if $string =~ /[a-z]/i;
print "matched [A-z]\n" if $string =~ /[A-z]/;
Para mí esto resulta en
matched :alpha:
Si se quita el entonces use utf8
no coincide ninguna expresiones regulares.
En cuanto a this very relevant question, parece que es probable que desee use utf8
y echa un vistazo Unicode::Semantics.
Por supuesto, si usa caracteres ASCII rectos, cualquiera de las expresiones regulares mencionadas anteriormente funcionará.
Tienes que tener cuidado con \ w y \ W en Perl. Últimamente es un objetivo móvil, así que no dependería de su definición. –
Lo que su editor muestra como 'ä' puede no ser una letra en Perl. 'ä' = "\ xE4" no está definido en el juego de caracteres ASCII, por defecto Perl usará clases de caracteres ASCII para cadenas que no están codificadas como UTF8. Agregar 'use utf8;' tratará su código fuente como UTF8 y convertirá a "ä" en una cadena Unicode. En el juego de caracteres Unicode 'ä' es un personaje alfabético. Compare '$ string =" ä ";' versus '$ string = decode (" iso-8859-1 "," ä ");' sin 'use utf8;'. En el primer caso, Perl verá datos binarios, en el segundo los datos binarios se interpretarán como Latin-1 y se convertirán a UTF-8. –
Simplemente use \p{L}
que significa "cualquier letra Unicode" y funciona en Perl (/\p{L}/
). Probablemente necesite use utf8;
.
- 1. ¿Es la mejor manera de unir dos repeticiones diferentes de la misma clase de caracteres en una expresión regular?
- 2. Expresión regular para que coincida solo con las letras
- 3. ¿Cuál es la expresión regular más eficiente?
- 4. expresión regular para coincidir alternando letras en
- 5. ¿Cuál es la expresión regular de una palabra en español?
- 6. Expresión regular para unir cantidades en dólares
- 7. ¿Cuál es la diferencia entre() y [] en una expresión regular?
- 8. ¿Cómo puedo unir una cadena completa con una expresión regular?
- 9. Expresión regular para unir dos frases separadas
- 10. ¿Cuál es la expresión regular para una URL como esta?
- 11. ¿Cuál es el significado de `?:` En la expresión regular
- 12. Expresión regular para capturar letras más allá de az
- 13. ¿Cómo valido un cuadro de texto para permitir solo letras y números usando una expresión regular?
- 14. ¿Cuál es la complejidad de la expresión regular?
- 15. Expresión regular - comenzando y terminando con una letra, aceptando solo letras, números y _
- 16. Expresión regular para unir números enteros no negativos en PHP?
- 17. Validador de expresión regular para letras y números solamente
- 18. ¿Cuál es la mejor manera de generar todas las posibles cadenas de tres letras?
- 19. ¿Cuál es la mejor manera de unir dos objetos durante el tiempo de ejecución usando C#?
- 20. ¿Cuál es la mejor manera de deducir una mesa?
- 21. Cuál es la mejor manera de autorizar una llave USB
- 22. ¿Cuál es la mejor manera de crear una matriz de solo lectura en C#?
- 23. Expresión regular - 2 letras y 2 números en C#
- 24. La mejor manera de unir 2 tablas usando Hibernate
- 25. ¿Cuál es la mejor arquitectura para unir a XMPP?
- 26. ¿Cuál es la mejor manera de construir una NSCompoundPredicate compleja?
- 27. Cuál es la expresión regular más larga que ha visto
- 28. ¿Cuál es la mejor manera de concatenar dos vectores?
- 29. ¿Cuál es la mejor manera de incrementar una enumeración?
- 30. ¿Cuál es la expresión regular que coincide con un corchete?
'[A-Za-z]' no está centrado en América, es ASCII-céntrico. – CanSpice
@CanSpice, yo diría que es América-centrada, como ASCII es sólo utiliza el alfabeto latino. – Axeman
@Axeman, Fuentes? AFAIK muchos idiomas derivados de latín han subrayado vocales y letras. [A-Za-z] no coincidirá ni con el Español ni con la Française. Incluso el latín puro tiene el glifo Æ que no está dentro de ASCII. ¿De qué latina estás hablando? – Kyordhel