Как разделить эту строку, используя Regex Java - PullRequest
0 голосов
/ 13 февраля 2020

Как видно из названия, я хочу разбить строку, но я не знаю, что поместить в String.split ("regex")

Скажем, у нас есть:

String s = "sum := A+B*( 99.1 +.44 444 1234+++)-sum/232.123459"

Теперь я хочу разделить это так:

String[] splitted = ["sum"; ":="; "A"; "+"; "B"; "*"; "("; "99.1"; "+"; ".44"; "444"; "1234"; "+"; "+"; "+"; ")"; "-"; "sum"; "/"; "232.123459"]

Итак, в основном я хочу разделить на пробелы, слова, математические операторы, числа, скобки, буквы и числа " .44 "должен оставаться таким.

Можете ли вы помочь мне? Заранее спасибо

1 Ответ

3 голосов
/ 13 февраля 2020

Не используйте split(). Используйте find() l oop.

String regex = "[0-9]+\\.?[0-9]*" + // Match number (e.g. 999 or 999.99)
              "|\\.[0-9]+" +        // Match number (e.g. .999)
              "|[a-zA-Z]\\w*" +     // Match identifier
              "|:=" +  // Match complex operator
              "|\\S";  // Match other single non-space, incl. operators: +, -, *, /, (, )

Тест

String s = "sum := A+B*( 99.1 +.44 444 1234+++)-sum/232.123459";
String[] splitted  = Pattern.compile(regex).matcher(s).results()
        .map(MatchResult::group).toArray(String[]::new);
System.out.println(Arrays.toString(splitted));

Выход

[sum, :=, A, +, B, *, (, 99.1, +, .44, 444, 1234, +, +, +, ), -, sum, /, 232.123459]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...