2012-03-21 2 views
1

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

К примеру, в этом предложении:

Как войти в установленное учреждение, как Голландский музей под открытым небом, широко связанный с ремеслом и традицией за ее пределами, ищущих обновление?

подрезания быть

для инноваций?

Я заказал более чем шесть недель назад в книге, и я все еще жду, ни малейшего представления, как долго ждать будет продолжаться?

подрезания быть

любая идея, как долго ждать будет продолжаться?

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

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

ответ

4

Попробуйте

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

и заменить $1

Смотреть это here on Regexr

+0

Великий ответ @stema –

5

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

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

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

-1
String s1 = "asdfasdadfsdf,asdfasd,fasd,fasd,fasdf"; 

      s1.lastIndexOf(","); 
      System.out.println(s1.substring(s1.lastIndexOf(",")+1,s1.length())); 
0

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

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

Пояснение:

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

В целом это подрезания сделать работу.

Смежные вопросы