Ich versuche, ausMulti einfangenden Gruppen in scala regex
val s: String = "sometextHere[a][b][c]"
zu
val x = "sometextHere"
val y = List("a", "b", "c")
Die Anzahl der "[...]" zu gehen, ist 1+. Ich habe etwas ziemlich hacky bekam, aber ich fühle mich wie es eine bessere Lösung
sein mussval bracketMatcher = "\\[(\\w+)\\]".r
val listMatcher = s"^(\\w+)((?:$bracketMatcher)+)".r
listMatcher.findAllIn(chunk) match {
case matchIterator if matchIterator.hasNext =>
val matchData = matchIterator.matchData.next()
val indexesMatch = bracketMatcher.findAllIn(matchData.group(2)).matchData.flatMap(_.subgroups).toList
val a = matchData.group(1) // This is "sometextHere"
val b = indexesMatch // This is List("a", "b", "c")
case _ => ...
Dies hat ein Potenzial, wirklich chaotisch zu werden. Was passiert, wenn Sie eine ungerade Anzahl von Klammern und/oder in der falschen Reihenfolge und/oder an verschiedenen Stellen des Strings haben. dh 'val s: String =" einige [[d] x [e]]] [[textHier [a] [b] [c] "' –
Guter Punkt, aber in diesem Fall bin ich nur an Fällen interessiert, die übereinstimmen Genau dieses Muster, alles was komplexer ist (geschachtelte Klammern usw.) sollte nicht übereinstimmen. – user1498572