Ответ 1
Вам нужно положительное утверждение прогноза:
([A-Z]{1,3})(?==)
В настоящее время я создаю игрушечный ассемблер в С# (через The Elements Of Computing Systems).
Мне нужно сопоставить очень простой шаблон, я подумал, что это будет подходящее время для изучения некоторого регулярного выражения, но я боюсь!
В следующих примерах я просто хотел бы сопоставить буквы перед символом '='
М = А
Д = М
MD = А
A = D
AD = М
AMD = А
Я придумал следующее:
([A-Z]{1,3})=
Однако это также соответствует "=", который я не хочу.
Я также пробовал:
([A-Z^\=]{1,3})=
Но у меня все еще есть одна и та же проблема - она совпадает с знаком "=".
Я использую этот сайт для проверки моих регулярных выражений.
Любая помощь будет действительно оценена. Заранее благодарю вас.
Вам нужно положительное утверждение прогноза:
([A-Z]{1,3})(?==)
То, что вы хотите, называется утверждением с нулевой шириной. Вы делаете:
(Match this and capture)(?=before this)
В вашем случае это будет:
([A-Z^]{1,3})(?==)
Следующее будет группировать все до "=" и все после.
([^=]*)=([^=]*)
он читает что-то вроде этого:
соответствует любому количеству символов, которое не является "=", а затем "=", а затем любое количество символов, которое не является "=".
Вы также можете поместить знак равенства в не захватывающие параны с (?:...)
([ADM]{1,3})(?:=)
Немного с тех пор, как я сделал эту главу книги, но я думаю, что, поскольку вам все равно нужны обе части выражения, я сделал разбивку на = result в myArray [0] == M, myArray [1] == A
Мне нужно было сопоставить каждого персонажа перед "=", поэтому я придумал этот
.*(?==)=
Соответствует каждому символу перед '=', но не "="