Независимо от того, была ли строка получена из строкового литерала или динамически из ввода, это ни на что не повлияет. Так что это или что-то не так с вашим регулярным выражением, или что-то в вашем вводе, что вы не ожидали и должны быть обрезаны.
Вы говорите, что напечатали строку - но легко пропустить непечатные символы или символы новой строки и т. Д.
Я предлагаю вам напечатать образец неудачной строки полностью, включая значения символов Unicode, например,
for (int i = 0; i < text.length(); i++)
{
char c = text.charAt(i);
System.out.println("Position: " + i + "Character: " + c
+ " Unicode: " + (int) c);
}
Тогда вы сможете вставить точно эту строку в ваш код, если вам нужно, и вы, вероятно, сможете определить, что не так, просто проверив ее в этой форме.