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;