Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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中不匹配#_C#_.net_Regex - Fatal编程技术网

C# 正则表达式在c中不匹配#

C# 正则表达式在c中不匹配#,c#,.net,regex,C#,.net,Regex,我尝试使用C#匹配以下模式,但没有找到匹配项 正则表达式 样本串 Student:Tom,Jerry 而同样的东西在ruby中也可以使用(使用验证)。知道为什么这在c#中不起作用吗 代码块 public static KeyValuePair<string, IList<string>> Parse(string s) { var pattern = new Regex(@"(\w*):([\w\d,]*)"); var matc

我尝试使用C#匹配以下模式,但没有找到匹配项

正则表达式

样本串

Student:Tom,Jerry
而同样的东西在ruby中也可以使用(使用验证)。知道为什么这在c#中不起作用吗

代码块

public static KeyValuePair<string, IList<string>> Parse(string s)
    {
        var pattern = new Regex(@"(\w*):([\w\d,]*)");
        var matches = pattern.Matches(s);
        if (matches.Count == 2)
        {
            return new KeyValuePair<string, IList<string>>(matches[0].Value, matches[1].Value.Split(','));
        }

        throw new System.FormatException();
    }
publicstatickeyvaluepair解析(字符串s)
{
var模式=新正则表达式(@“(\w*):([\w\d,]*)”;
变量匹配=模式匹配;
if(matches.Count==2)
{
返回新的KeyValuePair(匹配[0]。值,匹配[1]。值。拆分(',');
}
抛出新的System.FormatException();
}

尝试稍微更改您的正则表达式:-

([a-zA-Z]*):([a-zA-Z0-9,]*)
如果需要所有单词字符(包括下划线),甚至可以进一步简化,如果不需要,则使用上面的字符

(\w*):([\w\d,]*)

无需进行多组分组,例如
[[a-z][a-z]]

您可以进一步简化:

^([A-z]*):([\w,]*)$

第一组相当于
[a-zA-Z]
,第二组相当于
[a-zA-Z0-9]
。如果你想让第一组匹配数字和字符,你可以在任何地方使用
\w

我真的不太熟悉c,有没有可能需要转义?你做错了,应该是:
^([a-zA-Z]*):([a-zA-Z0-9,]*)$
对于这类事情来说是一个很好的工具:下面是您的示例和。它可以工作,但当我调用匹配时,我只得到一个匹配,而我希望得到两个匹配groups@KrishnaswamySubramanian你还在用同样的测试短语吗?我刚刚在一个C#应用程序上试用过,它对我来说非常有效:(使用“学生:汤姆,杰瑞”它显示了两组“学生”和“汤姆,杰瑞”是的!但仍然只得到一个匹配变量模式=新正则表达式(@“(\w*):([\w\d,]*);模式。匹配(“学生:汤姆,杰瑞”)@KrishnaswamySubramanian你介意用你用来匹配的代码更新你的问题吗?我们可以为你检查正则表达式选项等等?@KrishnaswamySubramanian你得到了一个匹配,因为文本实际上只包含一个模式匹配。但是,该匹配应该包含多个组-尝试检查集合
pattern.Matches(“学生:Tom,Jerry”)[0]。分组
。对于这样的文本,使用
匹配
方法更有意义,而不是
匹配
,这只有在您希望文本包含更多模式匹配时才有用。
^([A-z]*):([\w,]*)$