C# 正则表达式在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
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,]*)$