Regex - сопоставить шаблон перед персонажем

В настоящее время я создаю игрушечный ассемблер в С# (через The Elements Of Computing Systems).

Мне нужно сопоставить очень простой шаблон, я подумал, что это будет подходящее время для изучения некоторого регулярного выражения, но я боюсь!

В следующих примерах я просто хотел бы сопоставить буквы перед символом '='

М = А

Д = М

MD = А

A = D

AD = М

AMD = А

Я придумал следующее:

([A-Z]{1,3})=

Однако это также соответствует "=", который я не хочу.

Я также пробовал:

([A-Z^\=]{1,3})=

Но у меня все еще есть одна и та же проблема - она ​​совпадает с знаком "=".

Я использую этот сайт для проверки моих регулярных выражений.

Любая помощь будет действительно оценена. Заранее благодарю вас.

Ответы

Ответ 2

То, что вы хотите, называется утверждением с нулевой шириной. Вы делаете:

(Match this and capture)(?=before this)

В вашем случае это будет:

([A-Z^]{1,3})(?==)

Ответ 3

Следующее будет группировать все до "=" и все после.

([^=]*)=([^=]*)

он читает что-то вроде этого:

соответствует любому количеству символов, которое не является "=", а затем "=", а затем любое количество символов, которое не является "=".

Ответ 4

Вы также можете поместить знак равенства в не захватывающие параны с (?:...)

([ADM]{1,3})(?:=)

Немного с тех пор, как я сделал эту главу книги, но я думаю, что, поскольку вам все равно нужны обе части выражения, я сделал разбивку на = result в myArray [0] == M, myArray [1] == A

Ответ 5

Мне нужно было сопоставить каждого персонажа перед "=", поэтому я придумал этот

.*(?==)=

Соответствует каждому символу перед '=', но не "="