C# 여러 개의 따옴표 안의 콤마를 지우는 정규식 질문입니다

c# 여러 개의 따옴표 안의 콤마를 지우는 정규식 질문입니다.

기존의 코드는 이러했는데, 따옴표 세트가 2개 이상일 경우에는 오류가 납니다.

 string result = Regex.Replace(b, @",(?=[^""]*""(?:[^""]*""[^""]*"")*[^""]*$)",".");

아무래도 replace 때문에 여러개의 따옴표가 있을 경우에 문제가 있는 것 같습니다…ㅜ

위 result 변수는 아래처럼 csv로 나뉠 문장입니다.

aaa,bbb,ccc,“asdf,asdf,asdf”,“11,22,33”,qq

이와 같은 데이터를

aaa,bbb,ccc,“asdf.asdf.asdf”,“11.22.33”,qq

위처럼 마침표나 띄어쓰기로 대체할 수 있는 정규식을 구글링으로 찾아보았는데, 제 눈에는 맞는 조건을 못 찾아 올려봅니다…ㅜㅜ

미리 감사드립니다!

2개의 좋아요
using System;
using System.Text.RegularExpressions;

string yourString = "aaa,bbb,ccc,“asdf,asdf,asdf”,“11,22,33”,qq";

string fixedString = Regex.Replace(yourString, "(“[^“,]+),([^”]+”)", delegate (Match match)
{
    string v = match.ToString();
    return v.Replace(",", ".");
});

Console.WriteLine(fixedString);

실행결과

aaa,bbb,ccc,“asdf.asdf.asdf”,“11.22.33”,qq

안되었던 원인은 아마 “ 이 따옴표를 써서 그런 것 같습니다. " 이거 였다면 그 코드가 되었을 겁니다.

using System;
using System.Text.RegularExpressions;

string yourString = "aaa,bbb,ccc,\"asdf,asdf,asdf\",\"11,22,33\",qq";

string fixedString = Regex.Replace(yourString, @",(?=[^""]*""(?:[^""]*""[^""]*"")*[^""]*$)",".");

Console.WriteLine(fixedString);

실행결과

aaa,bbb,ccc,"asdf.asdf.asdf","11.22.33",qq
3개의 좋아요