Два мозга думают лучше, чем один
Я твердо верю, что парное программирование является фактором номер один, когда речь идет о повышении качества кода и производительности программирования. К сожалению, это также весьма спорным для управления, который считает, что «чем больше рук => больше кода => $$$!»
Вам нужно утверждение положительного просмотра :
([A-Z]{1,3})(?==)
Что вы хотите называется утверждением с упреждением нулевой ширины. Вы делаете:
(Match this and capture)(?=before this)
В вашем случае это будет:
([A-Z^]{1,3})(?==)
Следующее сгруппирует все до "=" и все после.
([^=]*)=([^=]*)
читается примерно так:
соответствует любому количеству символов, кроме "=", за которым следует a "=", затем любое количество символов, кроме "=".
You can also put the equals sign in a non-capturing parans with (?: ... )
([ADM]{1,3})(?:=)
It's been a bit since I did this chapter of the book but I think that since you need both parts of the expression anyway, I did a split on the = resulting in myArray[0] == M, myArray[1] == A