Найти все запятые вне кавычек

Рейтинг: 4Ответов: 1Опубликовано: 10.04.2015

Есть строка, в которой может быть куча запятых.

Нужно найти те из них, которые находятся вне кавычек и заменить на точки,

Было:
текст1,"текст2","текст,3","текст,,,4",текст 5
Должно быть
текст1."текст2"."текст,3"."текст,,,4".текст 5

Ответы

▲ 3

Попробуйте ,(?=([^"]*"[^"]*")*(?![^"]*"))

Тест проходит успешно

import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class TestRegex {

    @Test
    public void testRegex() throws Exception {
        String src = "текст1,\"текст2\",\"текст,3\",\"текст,,,4\",текст 5";
        String dest = "текст1.\"текст2\".\"текст,3\".\"текст,,,4\".текст 5";

        String regex = ",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))";
        String replace = "\\.";

        String result = src.replaceAll(regex, replace);

        assertEquals(dest, result);
    }
}