Supongo que esto será un error tonto, pero para mí, lo siguiente devuelve una matriz que contiene solo "M". Ver esto:Ruby Regex, Only One Capture (¡Muy simple!)
/(.)+?/.match("Many many characters!").captures
=> ["M"]
¿Por qué no devuelve una matriz de cada carácter? Debo haberme olvidado algo descaradamente obvio porque no puedo ver lo que está mal con esto?
Editar: ¿Acabo de dar cuenta, no necesito el +? pero todavía no funciona sin eso.
Edit: Disculpas! Aclararé: mi objetivo es permitir que los usuarios ingresen una expresión y un estilo regulares y un archivo de texto de entrada, donde haya una coincidencia, el texto estará rodeado por un elemento html y se aplicará el estilo, no solo estoy dividiendo el en caracteres, solo usé la expresión regular dada porque era la más simple aunque eso era estúpido de mi parte. ¿Cómo obtengo grupos de captura de scan() o no es posible? Veo que $ 1 contiene "!" (último partido?) y no otros.
Edit: Dios mío, realmente no es mi día. Como injekt me ha informado, las capturas se almacenan en matrices separadas. ¿Cómo obtengo el desplazamiento de estas capturas desde la cadena original? Me gustaría poder obtener el desplazamiento de una captura y luego rodearlo con otra cuerda. ¿O es para lo que es el gsub? (Pensé que sólo reemplaza el partido, no un grupo de captura)
Esperemos edición final: derecho, permítanme empezar de nuevo: P
lo tanto, tengo una cadena. El usuario usará un archivo de configuración para ingresar una expresión regular, luego un estilo asociado con cada grupo de captura. Necesito poder escanear toda la cadena y obtener el inicio y el final o el desplazamiento y el tamaño de cada coincidencia de grupo.
lo tanto, si un usuario ha configurado ([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
(correo electrónico) entonces yo debería ser capaz de obtener:
[ ["elliotpotts", 0, 11],
["sample.", 12, 7],
["com", 19, 3] ]
de la cadena: "[email protected]"
Si eso no es claro, simplemente hay algo mal conmigo: P. Muchas gracias, muchachos hasta ahora, ¡y gracias por ser tan pacientes!
acabo de ver tu edición, grupos de captura de exploración se almacenan en matrices independientes, sólo tratar su expresión regular y una cadena de prueba en el IRB verá. Las respuestas siguen siendo las mismas con su edición incluida –
Acabo de ver su próxima edición, deberá actualizar con más información. Estoy un poco confundido ahora: P Siéntase libre de arrojar un ejemplo más completo sin importar cuán artificial sea, para que sepamos exactamente lo que necesita extraer –
Muy bien, actualicé mi respuesta con su última edición. Estoy un poco atada por el tiempo ahora, así que es solo la solución completa sin explicación, avíseme si no tiene sentido y la actualizaré –