我有一个大字符串,它从 csv 文件获取数据,但是当使用正则表达式时,例如:
Regex regex = new Regex(@"\w+|""[\w\s]*""");
它会分割每个字母吗?每行没有空格,仅在行尾 - 但不应在双引号内有空格的地方剪切该行。
示例:测试1,测试2,测试3,测试4,测试5,“测试6”,测试7(新 线)测试8,测试9等
有人可以引导我走向正确的方向吗?谢谢
使用现有的 CSV 解析器,而不是尝试使用
Regex
- 正如您所看到的,格式很微妙。
FileHelpers 是一个流行的库,并且
TextFieldParser
位于 Microsoft.VisualBasic.FileIO
命名空间中。
这是一个老问题,但这是一个对我有用的正则表达式。
string SplitRegex = @"(?:,)|(['""][^""]*['""])(?:,)*";
string input = "\"dear friend, I'm home\", \"Thanks, your other friend.\"";
var results = Regex.Split(input, SplitRegex)
.Select(x => x.Trim())
.Where(match => !string.IsNullOrEmpty(match))
.ToList();
foreach(var result in results)
{
Console.WriteLine(result);
}
输出:
"dear friend, I'm home"
"Thanks, your other friend."