この表現
[A-Z]+(?=-\d+$)
次の文字列から SS と BCP を見つけます
ANG-B31-OPS-PMR-MACE-SS-0229
ANG-RGN-SOR-BCP-0004
私がやりたいことは、最初の文字列のPMRと2番目の文字列のBCPである3番目の「-」の後の値を見つけることです
どんな助けでも大歓迎です
この表現
[A-Z]+(?=-\d+$)
次の文字列から SS と BCP を見つけます
ANG-B31-OPS-PMR-MACE-SS-0229
ANG-RGN-SOR-BCP-0004
私がやりたいことは、最初の文字列のPMRと2番目の文字列のBCPである3番目の「-」の後の値を見つけることです
どんな助けでも大歓迎です
シンプルはString.Split
どうですか?
string input = "ANG-B31-OPS-PMR-MACE-SS-0229";
string value = input.Split('-')[3]; // PMR
後読みと先読みは、マッチから前後の部分を除外します。
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);
}
If you have the option it would be simpler to locate the third "-" and take a substring of the input. See nth-index-of.
var input = "ANG-B31-OPS-PMR-MACE-SS-0229";
input = input.Substring(input.NthIndexOf("-", 3) + 1, 3);