文件中有一些字符串,格式如下
rid="deqn1-2"
rid="deqn3"
rid="deqn4-5a"
rid="deqn5b-7"
rid="deqn7-8"
rid="deqn9a-10v"
rid="deqn11a-12c"
我想要一个正则表达式来匹配每个 deqnX-Y,其中 X 和 Y 都是整数 或 整数和字母的组合 并且如果有匹配存储 X 和 Y> 在一些变量中。 我尝试使用正则表达式 (^(\d+)-(\d+)$|^(\d+[a-z])-(\d+[a-z]))$ ,但如何获取变量中匹配组的值? 对于两个整数之间的匹配,组将是(我认为)
Groups[2].Value
Groups[3].Value
对于两个整数和字母组合之间的匹配将是
Groups[4].Value
Groups[5].Value
如何确定实际发生了哪些匹配,然后相应地捕获匹配组?
请您参考如下方法:
由于 C# 不支持分支重置(?|),我们可以使用同名的命名捕获组,例如
deqn(?:(?<match1>\d+)-(?<match2>\d+)|(?<match1>\d+\w+)-(?<match2>\d+\w+))\b
C#代码
String sample = "deqn1-2";
Regex regex = new Regex("deqn(?:(?<match1>\\d+)-(?<match2>\\d+)|(?<match1>\\d+\\w+)-(?<match2>\\d+\\w+))\\b");
Match match = regex.Match(sample);
if (match.Success) {
Console.WriteLine(match.Groups["match1"].Value);
Console.WriteLine(match.Groups["match2"].Value);
}
