2015-07-18 3 views
3

Я должен разделить строку, если она имеет следующий формат нижеJava Строка соответствует ошибке с Regex

String test="City: East Khasi Hills"; 

и несколько раз я могу получить String test="City:";

Я хочу, чтобы соответствовать шаблону, если есть какие-либо слова после того, как ":",

Я использую

String city=test.matches(":(.*)")?test.split(":")[1].trim():""; 

Но мое регулярное выражение в отставке urning false. устал от отладки, кстати, я использую regex online tool, чтобы проверить мою строку.

Я получаю матч в инструменте. но java возвращает мне ложь.

+0

Не используйте Regex101 для Java. Он не поддерживает Java-код регулярного выражения. Протестируйте с помощью [RegexPlanet] (http://www.regexplanet.com/advanced/java/index.html). – RealSkeptic

+0

Кроме того, как вы разделите «String» в первую очередь и почему? – RealSkeptic

+0

Мне нужно получить слово после «:», если есть еще слова пустая строка – saikiran

ответ

4

Вам не нужны оба матча и split оба. Просто используйте split так:

String[] arr = "City: East Khasi Hills".split("\\s*:\\s*"); 
String city = arr.length==2 ? arr[1] : ""; 
//=> "East Khasi Hills" 
+0

см. Мой отредактированный вопрос – saikiran

+0

Этот ответ по-прежнему будет работать, предоставив вам текст после ': \ s *' в 'arr [1]' – anubhava

+0

Нет удача, не сработала – saikiran

0

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

String str = "City: East Khasi Hills"; 
// Test if your pattern matches 
if (str.matches("(\\w)+:(\\s(\\w)+)*")) { 
    // Split your string 
    String[] split = str.split(":"); 
    // Get the information you need 
    System.out.println("Attribute name: " + split[0]); 
    System.out.println("Attribute value: " + split[1].trim()); 
} 
+0

мой вопрос в том, что если не совпадает с шаблоном, каким-либо образом он был разрешен благодаря вашему времени @Fernando – saikiran