Использование String.split()
. Примите во внимание, что он ожидает регулярное выражение в качестве аргумента, а |
является зарезервированным операндом регулярного выражения, поэтому вам нужно экранировать его с помощью \
. Итак, сделайте это двумя \
, чтобы \|
не интерпретировалось, как если бы вы использовали - недопустимую - escape-последовательность для символа |
:
String[] parts = text.split("\\|");
Посмотрите, как это работает здесь:
https://ideone.com/WibjUm
Если вы хотите использовать свой подход к регулярным выражениям, вам нужно будет группировать и фиксировать каждое повторение символов после каждого |
и ограничивать их любым, кроме |
, возможно, используя регулярное выражение, например \\|([^\\|]*)
.
В вашем цикле вы перебираете m.find()
и просто используете группу захвата 1, потому что это единственная группа, которая будет иметь каждое совпадение.
String text = "|tab_PRO|1|1|#tRecordType#||0|tab_PRO|";
Pattern p = Pattern.compile("\\|([^\\|]*)");
Matcher m = p.matcher(text);
while(m.find()){
System.out.println(m.group(1));
}
https://ideone.com/RNjZRQ