В качестве первых шагов похоже, что вы пропускаете синтаксис повторения, и, как побочный продукт, усложняете получение групп впоследствии.Другими словами, эта часть:
(?<PartNo>[a-zA-Z0-9-]*)__
должна выглядеть примерно так:
((?<PartNo>[a-zA-Z0-9-]*)__)+
+
означает, что вы ожидаете найти 1 или более из них, __включен во внешнюю группу захвата, потому что вам нужно, чтобы они простирались до последнего номера детали, а не -__ символы находятся в их собственной, внутренней группе захвата, так что вы можете просто извлечь их.
Если выВы уверены, что всегда будет номер детали, я бы опустил ?
во внутренней группе захвата, технически это противоречит +
, и хотя это не имеет значения, когда я его пробовал (в Notepad ++),нет смысла путать проблему.
Похоже, вам нужно будет провести тщательную оценку идентификаторов групп захвата после захвата, хотя я не использую псевдонимы, такие как <PartNo>
, и поэтому я могу 'не могу сказать наверняка, может быть, это не так сложно.