разделенная строка регулярных выражений java с пробелом (за исключением случаев, когда слева и справа было число или — )

#java #regex #capture-group

#java #регулярное выражение #группа захвата

Вопрос:

У меня есть эта строка, как разделить 5-28 14:00 — 5-28 18:00 60-х годов (.corp). Я хочу разделить его пробелом, за исключением случаев, когда в пробелах есть число или вокруг них.

Результат, который я хочу, был:

 1. how 
2. to
3. split
4. 5-28 14:00 - 5-28 18:00
5. the60s(.corp)
  

Спасибо.

Ниже приведен мой код:

 String str = "how do I split 5-28 14:00 - 5-28 18:00 the60s(.corp)";
    str = str.replaceAll("\s (?!(?=-|\d ))", "@");
  

Сначала я заменяю правый пробел на @ , затем разделяю строку на @ . Но это не работает.

Комментарии:

1. Хорошей отправной точкой было бы опубликовать код, который вы пробовали, объяснив, что не работает, почему, чего вы ожидали и что произошло вместо этого.

Ответ №1:

Для этого вы можете использовать поисковые запросы:

 (?<![-d])s |s (?![d-])
  

Демонстрация кода

Комментарии:

1. Извините, что забыл , как и сказано в названии.

2. @anubhava — отличный ответ .. 1

3. Спасибо @TheLostMind, рад, что это помогло OP