Java поддерживает конечный вид сзади с использованием квантификатора, например {0,100}
Чтобы сопоставить любой символ, кроме дефиса, вы можете использовать [^-]
, который является классом отрицательных символов,
Если вы хотите исключить соответствующие новые строки, вы можете расширить его до [^-\\r\\n]
Вы можете использовать:
(?<=^[^-]{0,100}-[^-]{0,100})-
По частям
(?<=
Положительный взгляд сзади, утверждение, что слева: ^
Начало строки [^-]{0,100}
- соответствует 0 - 100 раз любому символу, кроме -
, затем соответствует первому -
[^-]{0,100} Match 0 - 100 times any char except
-`
)
Закрыть взгляд назад -
Сопоставить второе -
с разделить на
Regex demo | Java демо
Например
System.out.println(
Arrays.toString(
"Part1-part2-part3-part4-part5".split("(?<=^[^-]{0,100}-[^-]{0,100})-")
)
);
Выход
[Part1-part2, part3-part4-part5]