C# 正则表达式在匹配组中的特定单词模式differant值处拆分字符串

C# 正则表达式在匹配组中的特定单词模式differant值处拆分字符串,c#,regex,C#,Regex,这个问题非常类似于我之前问的一个问题(),但是我需要稍微修改一下 所以在前面的问题中,这个字符串 Berkshire Hathaway Inc (Ticker: BRK; NAICS: 524126, 511130, 335212, 445292, 511110, 442210; Duns: 00-102-4314) Walt Disney Co (Ticker: DIS; NAICS: 713110, 512110, 711211, 515120; Duns: 00-690-4700) 我想现

这个问题非常类似于我之前问的一个问题(),但是我需要稍微修改一下

所以在前面的问题中,这个字符串

Berkshire Hathaway Inc (Ticker: BRK; NAICS: 524126, 511130, 335212, 445292, 511110, 442210; Duns: 00-102-4314) Walt Disney Co (Ticker: DIS; NAICS: 713110, 512110, 711211, 515120; Duns: 00-690-4700) 我想现在应该改成这样:

(?!\s*$)(.*?)(?:\([^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)

但是我如何提取Ticker:如果Ticker存在,那么选择该值而不是其他值?

我建议使用类似于计算正则表达式的工具。它是为C#Regex设计的,甚至可以将需要使用的代码复制到剪贴板中。您可以将示例粘贴到工具中,然后调整正则表达式,直到它起作用。我发现这样的工具是编写正则表达式的必备工具。

我还在学习正则表达式,所以我不确定是否可以在组上使用条件逻辑。但是,作为替代方案,您可以按如下方式修改正则表达式,以便它还可以捕获股票代码的组(如果存在):

(?!\s*$)(.*?)(?:\((Ticker:[^;]+)?[^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)
然后你可以在你的c代码中进行逻辑运算。我想这样做会奏效:

Regex regex = new Regex(@"(?!\s*$)(.*?)(?:\((Ticker:[^;]+)?[^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)");
Match match = regex.Match("Berkshire Hathaway Inc (NAICS: 524126, 511130, 335212, 445292, 511110, 442210; Duns: 00-102-4314) Walt Disney Co (Ticker: DIS; NAICS: 713110, 512110, 711211, 515120; Duns: 00-690-4700)");  
while (match.Success) {
    if (match.Groups[2].Success)
    {
        Console.WriteLine(match.Groups[2].Value);
    }
    else
    {
        Console.WriteLine(match.Groups[1].Value);
    }
    match = match.NextMatch();
}
输出:

Berkshire Hathaway Inc 
Ticker: DIS

我正在使用它,它有助于测试,但我对regex还是新手,所以我不确定我是否理解语法。regex buddy虽然不是免费的,但也是awesomeha。我喜欢这个解决方案,因为它很简单。顺便说一句,你不能在组上使用条件逻辑。正则表达式只是简单地将文本解析为is@JustinPihony谢谢你的提示!总是欣然接受:)
(?!\s*$)(.*?)(?:\([^)]*(?:(?:SIC|NAICS):[^)]*)+\)|$)
(?!\s*$)(.*?)(?:\([^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)
(?!\s*$)(.*?)(?:\((Ticker:[^;]+)?[^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)
Regex regex = new Regex(@"(?!\s*$)(.*?)(?:\((Ticker:[^;]+)?[^)]*(?:(?:SIC|NAICS|Duns):[^)]*)+\)|$)");
Match match = regex.Match("Berkshire Hathaway Inc (NAICS: 524126, 511130, 335212, 445292, 511110, 442210; Duns: 00-102-4314) Walt Disney Co (Ticker: DIS; NAICS: 713110, 512110, 711211, 515120; Duns: 00-690-4700)");  
while (match.Success) {
    if (match.Groups[2].Success)
    {
        Console.WriteLine(match.Groups[2].Value);
    }
    else
    {
        Console.WriteLine(match.Groups[1].Value);
    }
    match = match.NextMatch();
}
Berkshire Hathaway Inc 
Ticker: DIS