使用RegEx在第n次出现后查找值

时间:2013-03-19 22:11:05

标签: regex

此表达式

[A-Z]+(?=-\d+$)

从以下字符串中找到SS和BCP

ANG-B31-OPS-PMR-MACE-SS-0229

ANG-RGN-SOR-BCP-0004

我想要做的是找到第三个“ - ”之后的值  第一个字符串中的PMR和第二个字符串中的BCP

任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分:0)

简单String.Split怎么样?

string input = "ANG-B31-OPS-PMR-MACE-SS-0229";
string value = input.Split('-')[3]; // PMR

答案 1 :(得分:0)

如果您有选项,找到第三个“ - ”并获取输入的子字符串会更简单。请参阅nth-index-of

var input = "ANG-B31-OPS-PMR-MACE-SS-0229";
input = input.Substring(input.NthIndexOf("-", 3) + 1, 3);

答案 2 :(得分:0)

lookbehind和lookahead将从匹配中排除前后部分

string mus = "ANG-B31-OPS-PMR-MACE-SS-0229";

string pat = @"(?<=([^-]*-){3}).+?(?=-)";
MatchCollection mc = Regex.Matches(mus, pat, RegexOptions.Singleline);
foreach (Match m in mc)
{
    Console.WriteLine(m.Value);
}