Ruby Regex, Nur Ein Capture (Sehr Einfach!)

Ich denke, das wird eine dumme Fehler, aber für mich, das folgende gibt ein array zurück, nur "M". Sehen:

/(.)+?/.match("Many many characters!").captures
=> ["M"]

Warum nicht geben ein array zurück, der alle Zeichen? Ich muss etwas verpasst haben offensichtlich, denn ich kann nicht sehen, was falsch mit diesem?

Edit: Gerade gemerkt, ich brauche nicht das +? aber es funktioniert immer noch nicht ohne Sie.

Edit: Entschuldigt! Ich werde klarstellen: mein Ziel ist es, Benutzern zu geben, einen regulären Ausdruck und styling, sowie ein input-text-Datei, wo es eine übereinstimmung gibt, wird der text, umgeben von einem html-element und styling angewendet werden, ich bin nicht nur die Aufteilung der Zeichenkette in Zeichen, ich habe nur die angegebenen regex, denn es war das einfachste, obwohl das war dumm von mir. Wie bekomme ich capture Gruppen von scan() oder ist das nicht möglich? Ich sehe, dass $1 enthält "!" (letzter Spieltag?) und nicht irgendwelche anderen.

Edit: Oh Mann, es ist wirklich nicht mein Tag. Als injekt hat mir mitgeteilt, die Aufnahmen sind gespeichert in separaten arrays. Wie bekomme ich die Einpresstiefe von diesen erfasst von den original-string? Ich möchte in der Lage sein, um den offset einer fängt dann umgeben Sie es mit einer anderen Zeichenfolge. Oder ist es das, was gsub ist für? (Ich dachte, nur ersetzt das match, nicht eine capture-Gruppe)

Hoffentlich Letzte edit: Recht, lass mich einfach starten dies wieder 😛

So, ich habe einen string. Der Benutzer wird eine Konfigurationsdatei verwenden, um einen regulären Ausdruck eingeben, dann einen Stil, die mit jedem capture-Gruppe. Ich muss in der Lage sein, zu Scannen den gesamten string und Holen Sie sich die start-und Ziellinie oder offset und Größe der jeweiligen Gruppe entsprechen.

So, wenn ein Benutzer konfiguriert werden mussten ([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4}) (E-Mail-Adresse), dann sollte ich in der Lage zu bekommen:

[ ["elliotpotts", 0,  11],
  ["sample.",     12, 7],
  ["com",         19, 3] ]

aus dem string:
"[email protected]"

Wenn das nicht klar ist, gibt es einfach etwas mit mir nicht stimmt :P. vielen Dank so weit, Jungs, und danke, dass Ihr so geduldig!

  • Ich sah gerade deinen edit, erfassen Sie Gruppen von scan gespeichert sind, in getrennte arrays, versuchen Sie einfach Ihre regexp und einen test-string in der irb-du wirst sehen. Die Antworten stehen immer noch die gleichen mit Ihren enthalten Bearbeiten
  • Nur sah Ihr weiter zu Bearbeiten, müssen Sie eine update mit mehr Informationen. Ich bin ein wenig verwirrt jetzt 😛 Fühlen Sie sich frei zu werfen, bis ein vollständigeres Beispiel, egal wie gekünstelt es ist, damit wir genau wissen, was Sie brauchen, zu extrahieren
  • Okay, aktualisierte meine Antwort mit Ihrem neuesten Bearbeiten. Ich bin ein wenig gebunden für die Zeit jetzt, so ist es nur die komplette Lösung mit keine Erklärung, lassen Sie mich wissen, ob es nicht sinnvoll und ich werde es aktualisieren
InformationsquelleAutor Ell | 2011-10-03
Schreibe einen Kommentar