Я пытаюсь создать регулярное выражение для извлечения имен MIDI-заметок и октав из строки, чтобы в конечном итоге превратить результат в фактическое значение ноты MIDI.Предложения для регулярного выражения для разбора имен MIDI-заметок?
названия MIDI ноты являются дискретный диапазон от C-2 до G8, что соответствует 0 ... 127, так что:
0 = C-2
1 = C#-2
2 = D-2
...
125 = F8
126 = F#8
127 = G8
Вот что я сейчас:
^([CDEFGAB]#?)(-?[0-8])
Это выражение соответствует всем действительным нотам MIDI с группами захвата и отбрасывает очевидные, такие как K9
. Проблема в том, что он также соответствует фиктивному вводу, например A10
, и дает мне примечание = A октав = 1, что неверно.
EDIT: Конечно, это также принимает неправильные октавы, такие как -8, но я могу отфильтровать их после матча.
Это часть проекта в Objective-C, который использует аромат ICU regex.
Любые предложения?
К сожалению. Исправлено это в одном, но не в другом. Фиксация сейчас. Хорошо поймал! – gregkow