C# 简化正则表达式分组

C# 简化正则表达式分组,c#,regex,C#,Regex,结果在两组中,第二组完全捕获了我想要捕获的内容,而第一组完全无用,如何删除第一组 我试过(?:ABC)它不起作用您的模式使用1个捕获组(),2个非捕获组使用(?:) 您可以省略的两个非捕获组以及角色类中的|。我认为您还希望使*像*?一样非贪婪,以防止过度匹配 然后您的模式可能看起来像(在末尾匹配可选分号): 您也可以使用带有的版本来匹配而不是双引号: [Pp]rint\("(.+?)"\);? 尝试以下操作: [Pp]rint\(("[^"]+)"\); 您只有一个捕获组,其他两个是非捕获

结果在两组中,第二组完全捕获了我想要捕获的内容,而第一组完全无用,如何删除第一组


我试过(?:ABC)它不起作用

您的模式使用1个捕获组
()
,2个非捕获组使用
(?:)

您可以省略的两个非捕获组以及角色类中的
|
。我认为您还希望使
*
*?
一样非贪婪,以防止过度匹配

然后您的模式可能看起来像(在末尾匹配可选分号):

您也可以使用带有的版本来匹配而不是双引号:

[Pp]rint\("(.+?)"\);?

尝试以下操作:

[Pp]rint\(("[^"]+)"\);

您只有一个捕获组,其他两个是非捕获组
(?:
,您可以忽略。您的意思是
[Pp]rint\(“(.+)”;?
还是使用否定的字符类
[Pp]rint\(“[^”]+);
如何删除第一个组?不要使用它,只需使用
匹配.groups[1]。Value
[Pp]rint\(("[^"]+)"\);
            string input = "var input = Print(\"Hello World\");";
            string pattern = "[Pp]rint\\(\"(?'message'[^\"]+)";

            Match match = Regex.Match(input, pattern);
            string message = match.Groups["message"].Value;