首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regexp & back引用

Regexp & back引用
EN

Stack Overflow用户
提问于 2011-01-11 08:35:32
回答 2查看 189关注 0票数 0

伙计们,我需要帮助从字符串中提取

"AAA,BBB","CCC",DDDD

以下群体:

  • CCC

  • DDDD

  1. AAA

是否可以通过regex提取三个组,如果是,那么如何提取?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-01-11 11:47:57

功能

代码语言:javascript
复制
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);
        }
    }
}

会回来

代码语言:javascript
复制
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周围添加了双引号。我以为那是个错误。如果它不是一个错误,您可以尝试正则表达式:

代码语言:javascript
复制
var exp = new Regex("\G(?:^|,)(?:\s(?:\"([^\"])\")|([^\",]))");

解释:

代码语言:javascript
复制
\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

希望有帮助:)

票数 0
EN

Stack Overflow用户

发布于 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.试验”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4655638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档