Sie nicht ausgegeben erwartet hast, weil +/- sind nicht Wortzeichen \w
, du hast recht gespalten konnte, bevor +/-
mit voraus aussehen (=?) Syntax in Ihrem Fall:
strList.map(_.split("(?=[+-])"))
// res84: List[Array[String]] = List(Array(point, +100), Array(point, -100))
oder Sie können die +/-
Zeichen vor \w+
hinzufügen und machen es optional in welcher Art und Weise wird es zusammen mit dem +/-
Zeichen vor ihm ein Wort extrahieren, wenn es vorhanden ist:
val pattern = """[+-]?\w+""".r
// pattern: scala.util.matching.Regex = [+-]?\w+
println(strList.map(pattern.findAllIn(_).toList))
// List(List(point, +100), List(point, -100))
Noch besser ist, können Sie +-
nur vor Ziffern hinzu:
val strList = List("point+100", "point-100", "point100")
val pattern = """[a-zA-Z]+|[+-]?\d+""".r
// pattern: scala.util.matching.Regex = [a-zA-Z]+|[+-]?\d+
println(strList.map(pattern.findAllIn(_).toList))
// List(List(point, +100), List(point, -100), List(point, 100))
Hinzufügen ein weiteres Szenario strlist => "point100" erwartet o/p: List (List (Punkt 100), List (Punkt, -100), Liste (Punkt, 100)) –