0

这个表达

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

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

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

ANG-RGN-SOR-BCP-0004

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

任何帮助将不胜感激

4

3 回答 3

0

简单String.Split呢?

string input = "ANG-B31-OPS-PMR-MACE-SS-0229";
string value = input.Split('-')[3]; // PMR
于 2013-03-19T22:21:49.707 回答
0

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

var input = "ANG-B31-OPS-PMR-MACE-SS-0229";
input = input.Substring(input.NthIndexOf("-", 3) + 1, 3);
于 2013-03-19T22:24:43.950 回答
0

lookbehind 和 lookahead 将从匹配中排除 pre 和 post 部分

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);
}
于 2013-03-19T22:27:55.917 回答