基本上我正在處理CSV文件並在C#中逐行讀取它。我有一個字符串輸入(一行),並試圖找到一個正則表達式模式,並使用另一個正則表達式模式替換它,但結果不是我所期望的。使用正則表達式替換模式替換字符串
var input = "\"efgh ,ijkl123,\",abcd , \"efgh ,ijkl123,\",mnop456 \"efgh ,ijkl123,\"";
在輸出我需要用分號其中那些雙引號是逗號彼此之間更換雙引號之間的內部逗號。
雙引號和外部逗號(雙引號外的逗號之間)它可以只有空格。
因此,我希望輸出爲:"efgh ;ijkl123,",abcd , "efgh ;ijkl123,",mnop456 "efgh ,ijkl123,"
我的代碼:
var pattern = @".*,\s*""(.*,+.*)+""\s*,.*";
var replacePattern = @".*,\s*""(.*;+.*)+""\s*,.*";
if (Regex.IsMatch(input, pattern))
{
var output = Regex.Replace(input, pattern, replacePattern);
}
但在運行我的代碼,輸出爲:。 ,\ s「(。; +。)+」\ s *,。*這是replacePattern。
EDIT更多輸入採樣,並輸出作爲預期:
輸入
abcd , "efgh ,ijkl123,",mnop456
輸出
abcd , "efgh ;ijkl123;",mnop456
輸入
"efgh ,ijkl123,",abcd , "efgh ,ijkl123,",mnop456 "efgh ,ijkl123,"
輸出
"efgh ;ijkl123;",abcd , "efgh ;ijkl123;",mnop456 "efgh ,ijkl123,"
輸入
,"efgh ,ijkl123,",abcd" , "efgh ijkl123,",mnop456 "efgh ,ijkl123,","efgh ,ijkl123,"mnop456
輸出
,"efgh ;ijkl123;",abcd" , "efgh ijkl123;",mnop456 "efgh ,ijkl123,","efgh ,ijkl123,"mnop456
輸入
,"efgh" ,ijkl123,",abcd" , "efgh ijkl123,",mnop456 "efgh ,ijkl123,","efgh ,ijkl123,"mnop456
輸出
,"efgh" ,ijkl123,";abcd" , "efgh ijkl123;",mnop456 "efgh ,ijkl123,","efgh ,ijkl123,"mnop456
輸入
efgh ,ijkl123,",abcd , "efgh ,ijkl123,",mnop456 "efgh ,ijkl123,"
輸出
efgh ,ijkl123,",abcd , "efgh ;ijkl123;",mnop456 "efgh ,ijkl123,"
什麼,我從你的陳述讀書是要替換','和'昏迷;'分號,如果它是間雙引號? – Saleem
如果字符串超過2個雙引號,期望的行爲是什麼? – Zee
是的,那雙雙引號也是逗號之間的。如果我想簡化,它會是這樣的: ,「,」,=>,「;」, –