繁体   English   中英

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

[英]Regex is not matching in c#

我正在尝试使用C#匹配以下模式,并且找不到匹配项

正则表达式

^([[a-z][A-Z]]*):([[a-z][A-Z][0-9],]*)$

示例字符串

Student:Tom,Jerry

虽然同样的东西在ruby中起作用(使用Rubular验证它)。 知道为什么这不适用于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();
    }

尝试稍微改变你的正则表达式: -

([a-zA-Z]*):([a-zA-Z0-9,]*)

如果你想要所有单词字符(包括下划线),你甚至可以进一步简化它,如果没有,那么使用上面的那个。

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

不需要多组分组,例如[[az][AZ]]

您可以进一步简化它:

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

第一组相当于[a-zA-Z] ,第二组相当于[a-zA-Z0-9] 如果您希望第一个组与数字以及字符匹配,您可以在任何地方使用\\w

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM