String delimiterRegexp = "(;|:|[^<]/)";
String value = "get/time/pick me <i>Jack</i>";
String[] splitedTexts = value.split(delimiterRegexp);
for (String text : splitedTexts) {
System.out.println(text);
}
Output:
ge
tim
pick me <i>Jack</i>
Expected Result:
get
time
pick me <i>Jack</i>
Символ добавляется в качестве разделителя вместе с /. Может ли кто-нибудь помочь мне написать регулярное выражение для разделения текста на основе разделителя "/", и он должен игнорировать конечный тег xml"




[^<]/ будет соответствовать e/ и t/
вместо этого используйте просмотр назад, он будет иметь желаемое поведение, чтобы рассматривать / только как разделитель, если это не закрывающий тег
На regex101.com
(?<!<)/
Все регулярное выражение
(;|:|(?<!<)/)
Ваше регулярное выражение должно быть таким:
(;|:|(?<!<)/)
с отрицательным просмотром назад, демо: https://regex101.com/r/2k1WI5/1/
Текущее регулярное выражение [^<]/ будет соответствовать практически любому символу, отличному от <, за которым следует / даже \n, пробел и японские символы.
Вот почему вы теряете некоторые буквы, поскольку они считаются частью разделителя.
Следуя рекомендации Четвертая птица, вы даже можете упростить регулярное выражение до: ([;:]|(?<!<)/)
@Thefourthbird: Спасибо! Это еще красивее!
Возможно, вы также могли бы сократить первое чередование до
([;:]|(?<!<)/)