2014-12-20 6 views
0

Мой pgrm возвращает новости с веб-страницы в строчном формате. Я хочу разбить строку каждый раз, когда видит формат даты как dd-mm-yyyy. Можно ли разделить каждый раз, когда он видит дату ???Строка прерывания при просмотре формата даты

Pattern patern=Pattern.compile("-"); 
Matcher matcher = pattern.matcher(s); 
while (matcher.find()) { 
System.out.println(matcher.group(1)); 
} 

Мой формат данных как этот

String s="Meow looks like cocaine, is 20 times cheaper, more dangerous, and not illegal; with children as young as 14 addicted to it, CM Devendra Fadnavis has asked the Centre to ban it under the Narcotics Act 18-Dec-2014l The girl was allegedly raped by a school supervisor last week; an activist wrote to the DCP following which the police approached and convinced the survivor’s family to register the offence 18-Dec-2014 Former principal of a Mumbai school has written to education minister against reinstatement of a teacher, accused of sexually harassing nearly 40 Std X students, who is now out on bail 19-Dec-2014"

ответ

2

С этим шаблоном, он будет разделен на каждый «-», но группа 1 даже не существует, потому что вы не используют группы в своем регулярном выражении ,

Что вы хотите проще сделать с String.split, что

String[] split = s.split("\\d{2}-\\w{3}-\\d{4}"); 
for (String x :split) 
{ 
    System.out.println(x); 
} 

Регулярное выражение пояснило: 2 цифр следует тир, затем 3 слов символов (AFAIK коротких имен в течение нескольких месяцев все 3 букв следует другой дефис и год в 4-х цифр.

+1

Или, чтобы сохранить дату в строке, 'ДЕЛЕНИЕ ("(<= \\ д {2} -? \\ ш {3} - \\ д {4})")' , – Keppil

+0

Справа. Когда OP сказал split, я автоматически принял поведение метода split. – Malhelo

+0

@Malhelo он отлично работает ... спасибо – chopss

1

Вы можете попробовать ниже блока кода. Это добавит разрыв строки.

String s="Meow looks like cocaine, is 20 times cheaper, more dangerous, and not illegal; with children as young as 14 addicted to it, CM Devendra Fadnavis has asked the Centre to ban it under the Narcotics Act 18-Dec-2014l The girl was allegedly raped by a school supervisor last week; an activist wrote to the DCP following which the police approached and convinced the survivor’s family to register the offence 18-Dec-2014 Former principal of a Mumbai school has written to education minister against reinstatement of a teacher, accused of sexually harassing nearly 40 Std X students, who is now out on bail 19-Dec-2014 "; 
    Pattern pattern = Pattern.compile("(([0-9]{2})-([a-zA-Z]{3})-([0-9]{4}))"); 
    Matcher matcher = pattern.matcher(s); 
    while (matcher.find()) { 
     s = s.replaceAll(matcher.group(1),matcher.group(1)+"\n"); 
    } 
    System.out.println(s); 
+0

@liker это работает ... спасибо – chopss

+0

@liker Korkut ... но одна проблема все еще возникает ... когда я возвращаю эти данные на страницу jsp, используя атрибут модели, который он печатает как целая строка без разрывов строк ... как я могу разрешить этот ???? .. model.addAttribute ("news", news + "\ n"); – chopss

+0

Вы можете изменить с помощью «
» вместо «\ n» для тега html. –

1

видя, что ваш формат д ели в дд-пн-гггг, это регулярное выражение я придумал: '[0123] [\ d] - [JFMASOND] [aepuco] [nbrylgptvc] - \ d \ d \ d \ d'

[\ D] соответствует дате, которая может иметь либо 0,1,2, либо 3 в десятках цифр, а в тех местах, где она может быть любой десятичной,

[JFMASOND] [aepuco] [nbrylgptvc] соответствует месяц, я взял алфавиты из разных месяцев, первый алфавит в шапках отдыха два в маленьком.

\ d \ d \ d \ d соответствует годам (0000-9999) Надеюсь, что это ясно. Это регулярное выражение работает в python, не тестировалось в java, но оно должно работать нормально.

String exp='[0123][\d]-[JFMASOND][aepuco][nbrylgptvc]-\d\d\d\d'; 
String[] split = s.split(exp) 
for (String x :split) 
{ 
    System.out.println(x); 
} 
+0

thank u ... он тоже работает – chopss

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