假设我有一个字符串,需要验证其格式是否正确;例如RR1234566-001
(2 个字母、7 个数字、破折号、1 个或多个数字)。我用类似的东西:
Regex regex = new Regex(patternString);
if (regex.IsMatch(stringToMatch))
{
return true;
}
else
{
return false;
}
这可以告诉我是否stringToMatch
遵循以下定义的模式patternString
。我需要的(我最终会在稍后提取这些)是:123456
and 001
——即部分stringToMatch
.
请注意,这不是一个关于如何构造正则表达式的问题。我要问的是:“有没有一种方法可以同时匹配和提取值,而不必稍后使用拆分函数?”
您可以使用正则表达式组来完成此任务。例如,这个正则表达式:
(\d\d\d)-(\d\d\d\d\d\d\d)
让我们将电话号码与此正则表达式进行匹配:
var regex = new Regex(@"(\d\d\d)-(\d\d\d\d\d\d\d)");
var match = regex.Match("123-4567890");
if (match.Success)
....
如果匹配,您将在以下位置找到前三位数字:
match.Groups[1].Value
第二个 7 位数字为:
match.Groups[2].Value
附:在 C# 中,您可以使用 @"" 样式字符串来避免转义反斜杠。例如,@“\hi\”等于“\\hi\\”。对于正则表达式和路径很有用。
PS2。第一个组存储在 Group[1] 中,而不是您所期望的 Group[0] 中。这是因为 Group[0] 包含整个匹配的字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)