gpt4 book ai didi

c# - 正则表达式 C# - 是否可以在匹配时提取匹配项?

转载 作者:IT王子 更新时间:2023-10-29 04:22:30 42 4
gpt4 key购买 nike

比如说,我有一个字符串需要验证其格式是否正确;例如RR1234566-001(2 个字母,7 个数字,破折号,1 个或更多数字)。我使用类似的东西:

        Regex regex = new Regex(patternString);
if (regex.IsMatch(stringToMatch))
{
return true;
}
else
{
return false;
}

这可以告诉我 stringToMatch 是否遵循 patternString 定义的模式。不过,我需要的(后来我最终提取了这些)是:123456001——即 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\\"。对正则表达式和路径很有用。

附注 2。第一个组存储在 Group[1] 中,而不是您期望的 Group[0] 中。那是因为 Group[0] 包含整个匹配的字符串。

关于c# - 正则表达式 C# - 是否可以在匹配时提取匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841883/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com