Immagino che questo sarà uno stupido errore ma per me, il seguente ritorna un array contenente solo "M". Vedi questo:Ruby Regex, solo una cattura (molto semplice!)
/(.)+?/.match("Many many characters!").captures
=> ["M"]
Perché non restituisce un array di ogni carattere? Devo aver perso qualcosa di evidentemente evidente perché non riesco a vedere che cosa c'è di sbagliato in questo?
Modifica: ho appena realizzato, non ho bisogno del +? ma ancora non funziona senza di esso.
Modifica: Scuse! Chiarirò: il mio obiettivo è consentire agli utenti di inserire un'espressione regolare e uno stile e un file di testo di input, ovunque ci sia una corrispondenza, il testo sarà circondato da un elemento html e lo stile verrà applicato, non sto solo dividendo il testo stringa in caratteri, ho usato solo la regex dato perché era il più semplice anche se era stupido da parte mia. Come ottengo i gruppi di cattura da scan() o non è possibile? Vedo che $ 1 contiene "!" (ultima partita?) e non altri.
Modifica: Accidenti, non è davvero il mio giorno. Come mi ha informato injekt, le acquisizioni sono archiviate in array separati. Come ottengo l'offset di queste acquisizioni dalla stringa originale? Mi piacerebbe essere in grado di ottenere l'offset di una cattura quindi circondarlo con un'altra stringa. O è quello che sta per gsub? (Ho pensato che solo sostituito il match, non un gruppo di cattura)
Speriamo montaggio finale: destro, vorrei solo iniziare di nuovo: P
così, ho una stringa. L'utente utilizzerà un file di configurazione per inserire un'espressione regolare, quindi uno stile associato a ciascun gruppo di acquisizione. Devo essere in grado di scansionare l'intera stringa e ottenere l'inizio e la fine o l'offset e la dimensione di ogni corrispondenza di gruppo.
Quindi, se un utente ha configurato ([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
(indirizzo e-mail), allora dovrei essere in grado di ottenere:
[ ["elliotpotts", 0, 11],
["sample.", 12, 7],
["com", 19, 3] ]
dalla stringa: "[email protected]"
Se questo non è chiaro, c'è semplicemente qualcosa di sbagliato in me: P. Grazie mille finora ragazzi, e grazie per essere così paziente!
Ho appena visto la modifica, i gruppi di acquisizione dalla scansione sono memorizzati in array separati, basta provare l'espressione regolare e una stringa di prova in irb vedrai. Le risposte rimangono le stesse con la modifica inclusa –
Hai appena visto la tua prossima modifica, dovrai aggiornarla con ulteriori informazioni. Sono un po 'confuso ora: P Sentiti libero di lanciare un esempio più completo, non importa quanto sia inventato, quindi sappiamo esattamente cosa devi estrarre –
Ok, ho aggiornato la mia risposta con la tua ultima modifica. Sono un po 'legato per il momento in questo momento quindi è solo la soluzione completa senza spiegazione, fammi sapere se non ha senso e lo aggiornerò –