2017-02-09 2 views
-2

Узор: ([^\|]*)Java Regex Исключите последний определенный символ конца строки

Струны:

  1. Они нашли огромное золото во Вьетнаме | Китай | Лао прошлым летом. | BBCworld.com
  2. Они нашли огромное золото во Вьетнаме | Китай | Лао прошлым летом.

Результат: Они нашли огромное золото во Вьетнаме

Демо: http://regexr.com/3f8hi

Цель:

Они обнаружили огромный золотой во Вьетнаме | Китай | Лао прошлым летом.

+0

Вопрос: Как вы знаете, это нормально, чтобы удалить «BBCworld.com» из строки 1, но не ОК, чтобы удалить «| Lao прошлым летом». из строки 2? Вы должны ответить на этот вопрос, прежде чем мы сможем ответить на ваш вопрос. –

+0

P.S. @ WiktorStribiżew это не дубликат, просто плохо сформулированный и плохо определенный. –

ответ

2

Классического случай использования регулярных выражений, где он не нужен:

String result = input.substring(0, input.lastIndexOf('|')); 
+0

Я бы сказал 'indexOf': Пример говорит, что для' Они нашли огромное золото во Вьетнаме | Китай | Лао прошлым летом. | BBCworld.com' и «Они нашли огромное золото во Вьетнаме | Китай | Лао прошлым летом». Результатом должно быть «Они нашли огромное золото во Вьетнаме», так что это самый первый индекс '|', а не последний. – BackSlash

+0

@BackSlash, но * желаемый результат * - «Они нашли огромное золото во Вьетнаме | Китай | Лао прошлым летом». –

+0

Ох. Таким образом, «Результат» - это то, что он получает, и «Цель» - это то, что он хочет достичь ... Мой плохой, но ОП мог бы объяснить немного лучше. Сожалею! – BackSlash

0

Используй $ якорь, что означает конец строки:

\|[^|]*$ 
Смежные вопросы