RegEx для разделения строки с запятой, игнорируя запятую с пробелом

java regex split

1405 просмотра

2 ответа

89 Репутация автора

Мне нужно написать регулярное выражение, чтобы разделить строку запятой, но не запятой с пробелом. Я написал одно, но это не сработало.

Например:

String testString = "CONGO, THE DEMOCRATIC REPUBLIC OF THE,IRAN, ISLAMIC REPUBLIC OF,KOREA, DEMOCRATIC PEOPLE S REPUBLIC OF,NEPAL,NEW ZEALAND,SRI LANKA";

Ожидаемый результат:

  1. КОНГО, ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА
  2. ИРАН, ИСЛАМСКАЯ РЕСПУБЛИКА
  3. КОРЕЯ, ДЕМОКРАТИЧЕСКАЯ НАРОДНАЯ РЕСПУБЛИКА
  4. НЕПАЛ
  5. НОВАЯ ЗЕЛАНДИЯ
  6. ШРИ-ЛАНКА

Мой код:

public class TestRegEx {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String testString = "CONGO, THE DEMOCRATIC REPUBLIC OF THE,IRAN, ISLAMIC REPUBLIC OF,KOREA, DEMOCRATIC PEOPLE S REPUBLIC OF,NEPAL,NEW ZEALAND,SRI LANKA";
        String[] output = testString.split("([,][^(,\\s)])+");
        for (String country : output) {
            System.out.println(country);
        }
    }
}

ВЫХОД:

  1. КОНГО, ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА
  2. РАН, ИСЛАМСКАЯ РЕСПУБЛИКА
  3. ОРЕА, ДЕМОКРАТИЧЕСКАЯ НАРОДНАЯ РЕСПУБЛИКА
  4. EPAL
  5. EW ZEALAND
  6. РИ ЛАНКА
Автор: Sampath T Источник Размещён: 20.10.2013 04:51

Ответы (2)


2 плюса

29043 Репутация автора

Использовать нулевую ширину, смотреть назад и смотреть вперед

testString.split("(?<! ),(?! )")
Автор: Anirudha Размещён: 20.10.2013 04:53

3 плюса

190 Репутация автора

,(?!\s)

Объяснение:

Подберите любую запятую, за которой не следует пробел.

Смотрите это в действии здесь: http://regex101.com/r/gW3hJ8

Автор: gry Размещён: 20.10.2013 05:02
Вопросы из категории :
32x32