伙计们,我需要帮助从字符串中提取
"AAA,BBB","CCC",DDDD
以下群体:
是否可以通过regex提取三个组,如果是,那么如何提取?
谢谢。
发布于 2011-01-11 11:47:57
功能
public void RunTest()
{
const string toTest = "\"AAA, BBB\", \"CCC\", \"DDDD\"";
var exp = new Regex("\G(?:^|,)\s*\"([^\"])\"");
var matches = exp.Matches(toTest);
foreach (var match in matches.Cast())
{
Console.WriteLine(@"Matched expression: {0}", match);
foreach (var group in match.Groups.Cast())
{
Console.WriteLine(@"Matched group: {0}", group);
}
}
}会回来
Matched expression: "AAA, BBB"
Matched group: "AAA, BBB"
Matched group: AAA, BBB
Matched expression: , "CCC"
Matched group: , "CCC"
Matched group: CCC
Matched expression: , "DDDD"
Matched group: , "DDDD"
Matched group: DDDD所以收集每一组你就能得到我想要的。注意,我在DDDD周围添加了双引号。我以为那是个错误。如果它不是一个错误,您可以尝试正则表达式:
var exp = new Regex("\G(?:^|,)(?:\s(?:\"([^\"])\")|([^\",]))");
解释:
\G The match must occur at the point where the previous match ended.
[^"] Any character except the double quote
\s Any whitespace
* zero or more occurrences of the preceding element
( and ) define a group
(?: defines a noncapturing group希望有帮助:)
发布于 2011-01-11 13:58:13
var delimiterPattern = @",(?=(?:[^\"]\"[^\"]\")(?![^\"]\"))"; var parts = string.Split(delimiterPattern);
用于字符串:玩具"r","AAAA",“玩具","r”,“r,”,“玩具”,"r“,”“,测试
将返回: 1.“玩具"r”r“us”2。"AAAA“3.”玩具" r“us”4.“玩具,r”,“5.玩具”,"r",“6.试验”
https://stackoverflow.com/questions/4655638
复制相似问题