Это происходит потому, что символ |
имеет специальное значение в регулярном выражении, поэтому вы должны экранировать его, используя символ \
.См. Демонстрацию в Regex101 .
Более того, в Java вы должны экранировать этот символ с двойной обратной косой чертой \\
.
Pattern pattern = Pattern.compile("\\|\\|(.*?)\\|\\|");