C# 正则表达式在引号中查找组匹配

C# 正则表达式在引号中查找组匹配,c#,regex,expression,C#,Regex,Expression,我正在努力使用正则表达式在单引号中查找文本组。我需要你关于如何得到它的建议 输入文本: Transfer assignee from 'David, Patricia' to '' Transfer group from 'Science Department - Support Group' to 'Science Department - Human Resources ' 要求:我需要提取组从和组到在单报价,并保存在数据库中 我试过了,但结果总是空的。这是密码 public void

我正在努力使用正则表达式在单引号中查找文本组。我需要你关于如何得到它的建议

输入文本:

Transfer assignee from 'David, Patricia' to ''
Transfer group from 'Science Department - Support Group' to 'Science Department - Human Resources '
要求:我需要提取组从和组到在单报价,并保存在数据库中

我试过了,但结果总是空的。这是密码

 public void ExtractGroup(string text)
    {
        var match = Regex.Match(text, @" group from '([^']*)" to '([^']*)", RegexOptions.IgnoreCase);

        if(match.Success) {
             var groupfrom = match.Groups[1].Value;
             var groupTo = match.Groups[2].Value;
        }
    }
鉴于这一投入:

Transfer assignee from 'David, Patricia' to '' Transfer group from 'Science Department - Support Group' to 'Science Department - Human Resources '
根据你的描述:

 to extract the group from and group to in the single quote
您希望输出为以下两个字符串:

Science Department - Support Group
Science Department - Human Resources
我希望像这样的正则表达式可以工作:

 to .*?'(.*?)' to '(.*?)'
但是,我可能会让这更完整一点,因为您以后可能需要整个数据集:

Transfer (.*?) from '(.*?)' to '(.*?)' Transfer (.*?) from '(.*?)' to '(.*?)'
这样你就可以:

1: transfer type 1 - 'assignee'
2: transfer from 1 - 'David, Patricia'
3: transfer to 1   - ''
4: transfer type 2 - 'group'
5: transfer from 2 - 'Science Department - Support Group'
6: transfer to 2   - 'Science Department - Human Resources '

或者,您可以使用
Transfer(.*)从'.*?'到'.*?'
regex,将其提取一点,并多次应用于字符串,直到Transfer类型等于
group
。通过这种方式,您可以稍后为其他传输类型添加逻辑,并且您可以在字符串中声明任意数量的传输,而不会出现任何中断。

我尝试了您的代码,发现它工作正常:

public static void ExtractGroup()
{
    string input = "Transfer assignee from 'David, Patricia' to '' Transfer group from 'Science Department - Support Group' to 'Science Department - Human Resources '";
    var match = Regex.Match(input, @" group from '(?<from>[^']*)' to '(?<to>[^']*)'", RegexOptions.IgnoreCase);

    if (match.Success)
    {
        Console.WriteLine(match.Groups["from"]); // Science Department - Support Group
        Console.WriteLine(match.Groups["to"]); // Science Department - Human Resources
    }            
}
publicstaticvoid提取器组()
{
string input=“将受让人从‘David,Patricia’转移到‘将小组从‘科学部门-支持小组’转移到‘科学部门-人力资源’”;
var match=Regex.match(输入,@“组从“(?[^']*)”到“(?[^']*)”,RegexOptions.IgnoreCase);
如果(匹配成功)
{
Console.WriteLine(match.Groups[“from”]);//科学部-支持小组
Console.WriteLine(match.Groups[“to”]);//科学部-人力资源部
}            
}

但是,我在C#控制台应用程序中运行它。但是我不认为这会有什么不同。

在模式中,您在
to
之前写了一个双引号,而不是一个单引号。