gpt4 book ai didi

c# - 正则表达式拆分未给出预期结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:01 25 4
gpt4 key购买 nike

所以我有一个文本文件,它为我提供逗号分隔的数据,这些数据用双引号括起来,如下所示:

string test = "\"foo\",\"bar\",\"1\",\"\",\"baz\"";

我想捕获每个值,最初我只是用逗号分隔,但我注意到有时引号之间有逗号,所以我将其更改为使用正则表达式来使用非常简单的正则表达式将引号之间的所有内容拉出来:

string pattern = "\"[^\"]*\"";

使用 regexpal 这会返回我想要的结果,但是无论出于何种原因,当我在 c# 中运行这个小程序时,我得到的是所有逗号的列表,而不是我真正感兴趣的值,我是不太确定为什么。谁能发现我的错误?

string test = "\"foo\",\"bar\",\"1\",\"\",\"baz\"";
string pattern = "\"[^\"]*\"";
string[] lines = Regex.Split(test, pattern); //Returns a list of commas in quotes

最佳答案

这是因为 Regex.Split 使用模式来决定必须在何处拆分序列。换句话说,该模式描述的是分隔符,而不是您想要捕获的内容:

Splits an input string into an array of substrings at the positions defined by a regular expression pattern

要以您希望的方式使用表达式,您需要调用 Regex.Matches 以获得 MatchCollection ,并从该集合中检索单个匹配项:

string test = "\"foo\",\"bar\",\"1\",\"\",\"baz\"";
string pattern = "\"[^\"]*\"";
MatchCollection mc = Regex.Matches(test, pattern);
foreach (var m in mc) {
Console.WriteLine(m);
}

这是一个demo on ideone .

关于c# - 正则表达式拆分未给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15934236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com