Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这个正则表达式不返回正确的匹配项?_C#_Regex - Fatal编程技术网

C# 为什么这个正则表达式不返回正确的匹配项?

C# 为什么这个正则表达式不返回正确的匹配项?,c#,regex,C#,Regex,我试图返回字符串的一部分,我想返回第一个斜杠之前的所有内容: EC22941C/02/ORI 应该给我:EC22941C 我习惯于建立自己的表达方式: (EC.+?)\/.+ 根据我的文本进行测试时: EC22941C/02/ORI 它正确地告诉我第一组是 EC22941C 当我把它放入C#时: 我得到的结果是: EC22941C/02/ORI 我尝试了许多不同的模式,它们似乎都做了相同的事情 有人知道我做错了什么吗?问题是您返回了错误的组索引,0将返回整个匹配项,1返回捕获括号的匹配

我试图返回字符串的一部分,我想返回第一个斜杠之前的所有内容:

EC22941C/02/ORI
应该给我:EC22941C

我习惯于建立自己的表达方式:

(EC.+?)\/.+
根据我的文本进行测试时:

EC22941C/02/ORI
它正确地告诉我第一组是

EC22941C
当我把它放入C#时:

我得到的结果是:

EC22941C/02/ORI
我尝试了许多不同的模式,它们似乎都做了相同的事情


有人知道我做错了什么吗?

问题是您返回了错误的组索引,
0
将返回整个匹配项,
1
返回捕获括号的匹配上下文-从左到右编号

return match.Groups[1].Value;

您应该使用
match.Groups[1].Value

match.Groups[0]。Value
返回整个字符串(如果它与模式匹配)

此外,您还需要更改if条件。:)

您可以简单地使用它,避免使用组。请参阅演示


哦,老兄,我觉得自己太傻了!它正盯着我的脸,谢谢!
return match.Groups[1].Value;
^EC[^\/]+
string strRegex = @"^EC[^\/]+";
Regex myRegex = new Regex(strRegex, RegexOptions.Multiline);
string strTargetString = @"EC22941C/02/ORI";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here
  }
}