Scala Liste Match Regex
Habe ich eine Liste von strings und regex-Muster. Ich möchte zum filtern der Elemente aus der Liste, die nicht mit der regex. Ich bin mit dem folgenden code, der scheint nicht zu funktionieren:
val matching = token.filter(x => regex.pattern.matcher(x).matches)
wo token ist die Liste von strings und regex ist das Muster, das ich will Spiel
- Ich denke, diese Frage ist völlig in Ordnung SO und ich bin überrascht, dass es geschlossen wurde ohne Kommentar. Alle es braucht ist ein Beispiel, string/regex, um eine perfekte, kompakte Frage.
InformationsquelleAutor princess of persia | 2013-02-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code sollte funktionieren. Sind Sie sicher, dass Ihre regex korrekt ist?
Edit:
Angesichts Ihrer regex, stellen Sie sicher, dass die folgenden Beispiele, die Ihren Vorstellungen entsprechen:
Den
matches
Methode wird versucht zu entsprechen, die gesamte Kette.regex.unanchored.pattern.matcher(string).matches
doesn ' T scheinen zu den trick tun. Es scheint notwendig zu kleben.*
auf den Kopf & Schwanz von der regex, das ist ziemlich hässlich.Weitere option für die Vollständigkeit:
Haben Sie versucht, es wie:
Etwas, dass ich ' ve hatte Probleme mit bei der Verwendung von Scala die Regex-engine ist, dass
.matches
wird versucht, eine übereinstimmung mit dem gesamten string, im Gegensatz zu tun, ein Spiel auf alle möglichen Teilstrings.In vielen regex-engines der folgende code auswerten match:
"alphie".match(/a/)
In Scala, mit
.matches
hier Versagen; es wird versucht, Spiel "a" gegen die gesamte Zeichenfolge "alphie". Allerdings, wenn die Regex war/a*/
es funktionieren würde, da die*
Charakter passt null oder viele Zeichen.Wenn das hinzufügen wiederholen Regex Symbole ist nicht eine option, die
findAllIn
Methode, die nützlich sein könnten:Hinweis:
findAllIn
kann eine bestimmte Zeichenfolge, die mehrere Male, wenn es mehrere übereinstimmungen in einem string.regex.matchesSomewhere(_)
existiert nicht in der aktuellen API. @nimda, eine Möglichkeit ist die Verwendung der.unanchored
Methode.