У меня есть сценарий, где мне нужно разбить нижнюю строку ввода на основе ключевых слов с использованием регулярного выражения.Как разбить строку с помощью ключевых слов с помощью regex
Ключевые слова: UPRCAS, REPLC, LOWCAS и TUPIL.
String input = "UPRCAS-0004-abcdREPLC-0003-123TUPIL-0005-adf2344LOWCAS-0003-ABCD";
Выход должен быть следующим
UPRCAS-00040-abcd
REPLC-0003-123
TUPIL-0005-adf2344
LOWCAS-00030-ABCD
Как я могу добиться этого с помощью Java регулярных выражений.
Я попытался использовать split by '-' и с помощью regex, но оба подхода дают массив строк, и я снова обрабатываю каждую строку и объединяю 3 строки вместе, чтобы сформировать UPRCAS-00040-abcd
. Я чувствовал, что это не эффективный способ сделать, поскольку он требует дополнительного массива и обрабатывает их.
String[] tokens = input.split("-");
String[] r = input.split("(?=\\p{Upper})");
Пожалуйста, дайте мне знать, если мы сможем разбить строку, используя регулярное выражение, основанное на ключевом слове. В основном мне нужно извлечь строку между границей ключевых слов.
Edited вопрос после того, как понимание ограничения существующей проблемы
- Регулярное выражение должно быть общим для извлечения строки из ввода между символами верхнего регистра
- Регулярное выражение не содержит ключевых слов для разделения строки.
Я понял, что это плохая идея добавлять новое ключевое слово каждый раз в шаблон регулярного выражения для поиска. Мое ожидание должно быть как можно более общим.
Спасибо всем за ваше время. Действительно ценю это.
* Комментарий к отредактированной вопрос: * Если разделить на прописных символов, ваш 4-й значение будет разделено на 'LOWCAS-00030-' и 'ABCD'.Если вы не можете * гарантировать *, что все значения ожидают, что последний будет * никогда * использовать символы верхнего регистра, кроме префикса, использование UPPERCASE не будет работать. – Andreas
Да. В этом случае мне нужно сравнить ключевое слово с каждым извлечением выходной строки. –