удалить все до последней запятой - PullRequest
1 голос
/ 21 марта 2012

Я хочу удалить все перед последней вкладкой (или запятой).

Например, в этом предложении:

Hoe treedt een gevestigd instituut als het Nederlands Openluchtmuseum, alomgeassocieerd встретил ambacht en traditie, buiten zijn grenzen op zoek naar vernieuwing?

должно быть

naar vernieuwing?

Ik heb ruim 6 недель путиboek besteld en ik wacht nog steeds, enig idee hoe lang dit wachten nog gaat duren?

должно быть

enig idee hoe lang dit wachten nog gaat duren?

Я пробовал это,

"^ (. * \ T +) +", но это не работает.

Ответы [ 4 ]

5 голосов
/ 21 марта 2012

Регулярные выражения - неправильный инструмент для этой работы.

Просто используйте lastIndexOf(), чтобы найти последние , и / или \t, а затем используйте substring(), чтобы отменить то, что вы хотитеkeep.

В любом случае, написание этого с использованием правильных идиом Java будет в большей степени самодокументированным и более легким в обслуживании.

4 голосов
/ 21 марта 2012

Попробуйте это

^.*?([^\t,]*)$

и заменить на $1

Посмотри здесь на Regexr

0 голосов
/ 21 марта 2012

Вместо того, чтобы думать об этом как об удалении части перед последней запятой, вы можете думать об этом как об извлечении части после последней запятой. Это может быть достигнуто с помощью следующего регулярного выражения:

(?:[,\t]|^)([^,\t]*)$

Пояснение:

  • (?:[,\t]|^) соответствует ,, табуляции или началу строки. (Не захватывает.)
  • ([^,\t]*) фиксирует любой следующий за ним символ, который не является , или табуляцией.
  • $ привязывает его к концу строки.

В целом это должно сделать работу.

0 голосов
/ 21 марта 2012
String s1 = "asdfasdadfsdf,asdfasd,fasd,fasd,fasdf";

            s1.lastIndexOf(",");
            System.out.println(s1.substring(s1.lastIndexOf(",")+1,s1.length()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...