2013-12-09 6 views
-1

У меня есть эта строкаRegular Expression

Английский> Искусство> Фотография

Хотите регулярное выражение, чтобы удалить все после последнего (>), хотят выход быть как этот

английский> Искусство>

Большое спасибо,

+1

У U пробовал что-нибудь ?? – TheLostMind

+0

Я пробовал подстроку (0, str.indexOf (">")), но она удаляет все после первого (>), но я хочу удалить после последнего не первого. – user3035802

+0

раскол на основе ">" добавить arr [0] + ">" + arr [1] .. – TheLostMind

ответ

2

String.lastIndexOf() вместо String.indexOf(). нет необходимости идти на регулярные выражения для этого

+0

спасибо за помощь – user3035802

0

Использования LastIndexOf, как указано ниже:

Substring(0, [YourString].LastIndexOf('>')); 
+0

Большое спасибо за помощь – user3035802

+0

не забудьте поднять и пометить его как ответ, если это будет полезно. так что другие пользователи могут использовать одно и то же решение. :) – SpiderCode

0

Вы можете использовать substring и lastIndexOf, как показано ниже:

String s = "English>Arts>Photography"; 
System.out.println(s.substring(0,s.lastIndexOf('>'))); 
+0

Очень спасибо – user3035802

0

Если вы действительно не хотите использовать .lastIndexOf() (я не знаю, почему вы этого не сделали). Регулярное выражение было бы:

String input = "English>Arts>Photography"; 
Pattern p = Pattern.compile("(.*>)[A-Za-z]+"); 
Matcher m = p.mathcer(input); 
if (m.matches()) { 
String output = m.group(1); 
} 
+0

Большое спасибо за вас, но есть простое редактирование в регулярном выражении, которое вы должны добавить (+) в конце регулярного выражения, чтобы соответствовать более чем одному символу, это должно быть как .compile ("(. * >) [A-Za-Z] + "); снова очень спасибо за вашу помощь. – user3035802

+0

gah, хорошее место. Не удосужился проверить его локально, поскольку проблема уже решена! – M21B8