Если у меня есть строка типа
foo&bar&baz
, и я хочу извлечь из нее токены foo, bar, baz. регулярное выражение легко написать
val regex = "([^&]+)".r
regex.findAllIn("foo&bar&baz").map(_.toString).toList
Это дает мне ответ, который я хочу.
List("foo", "bar", "baz")
Но на входе может быть символ & экранирован с помощью _&_
Так что, если вход
foo_&_bar&baz
Выход должен быть foo & bar, baz.
Я гуглил и нашел эту тему, у которой есть похожая проблема
RegEx запрещает символ, если не экранирован
На основании этой темы я изменил свое регулярное выражение на
val regex = "((?:_&_|[^&]*)+)".r
Но это не работает, вывод
List("foo_", "", "_bar", "", "baz", "")