Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

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

#регулярные_выражения

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

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

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

    


Ответы

Ответ 1



Попробуйте ,(?=([^"]*"[^"]*")*(?![^"]*")) Тест проходит успешно 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); } }

Комментариев нет:

Отправить комментарий