C# RegEx Replace在短语周围添加括号

C# RegEx Replace在短语周围添加括号,c#,regex,C#,Regex,我需要一个正则表达式,当遇到逗号时,它会将括号添加到字符串中。一个例子可能更简单: 我在这里,那里-->(我在这里),那里 鲍勃,在这儿,在那儿,在某处-->鲍勃,(在这儿,在那儿),在某处 苏,鲍勃,乔,给你-->苏,鲍勃,乔,(给你) 米莉·巴里·莫莉,乔·桑迪·玛丽——>(米莉·巴里·莫莉),(乔·桑迪·玛丽) 任何帮助或指点都将不胜感激。试试看 string input = "Milly Barry Molly,Joe Sandy Mary"; Regex regex = new Re

我需要一个正则表达式,当遇到逗号时,它会将括号添加到字符串中。一个例子可能更简单:

我在这里,那里-->(我在这里),那里

鲍勃,在这儿,在那儿,在某处-->鲍勃,(在这儿,在那儿),在某处

苏,鲍勃,乔,给你-->苏,鲍勃,乔,(给你)

米莉·巴里·莫莉,乔·桑迪·玛丽——>(米莉·巴里·莫莉),(乔·桑迪·玛丽)

任何帮助或指点都将不胜感激。

试试看

string input = "Milly Barry Molly,Joe Sandy Mary";

Regex regex = new Regex(
    @"(?<=^|,)\s*(?>[^\s,]+\s*){2,}(?=,)|(?<=,)\s*(?>[^\s,]+\s*){2,}$" );
string result = regex.Replace(input, "($&)");

Console.WriteLine(result);
// (Milly Barry Molly),(Joe Sandy Mary)
string input=“米莉·巴里·莫莉,乔·桑迪·玛丽”;
正则表达式正则表达式=新正则表达式(
@“(?[^\s,]+\s*){2,}(?=,)|(?[^\s,]+\s*){2,}$”;
字符串结果=regex.Replace(输入“($&)”;
控制台写入线(结果);
//(米莉·巴里·莫莉),(乔·桑迪·玛丽)

根据要求进一步解释。

你试过什么吗?给出你的文本示例:
我在这里,那里
米莉和莫莉,乔和玛丽
对于本质上相同的输入,你想要不同的结果。所以规则是,在逗号之间,如果有多个单词字符序列被至少一个空格分隔,则会添加括号?@Damien_The_unsiver:据我所知,
似乎也是解决问题的一部分。@Damien_The_unsiver,我更新了问题。基本上,如果句子中包含逗号,“间隔”单词需要分组(通过括号)。用逗号分隔的单词不需要用括号来分组,非常感谢。我很少在SO上提问,甚至很少在没有任何示例代码的情况下提问。你的解决方案很管用。我必须像以前一样编辑解决方案,如果一个句子不包含任何
它仍然会被包含在
()
中。不幸的是,这使得正则表达式变得相当长。@MikeM-它通过了我所有的单元测试:-)。。。我刚加了一个新的。。。。再次感谢。