문자열에서 MIDI 노트 이름과 옥타브를 추출하여 결과를 실제 MIDI 노트 값으로 바꾸기 위해 정규식을 디자인하려고합니다.regex가 MIDI 노트 이름을 구문 분석하도록 제안 하시겠습니까?
다음0 = C-2
1 = C#-2
2 = D-2
...
125 = F8
126 = F#8
127 = G8
내가 지금 가지고있는 내용은 다음과 같습니다 :
MIDI 노트 이름 있도록 0 ~ 127에 해당하는 G8에 C-2에서 분리 된 범위입니다
^([CDEFGAB]#?)(-?[0-8])
이 표현식은 캡처 그룹이있는 유효한 모든 MIDI 노트와 일치하며, 확실한 숫자는 K9
입니다. 문제는 이것도 A10
과 같은 가짜 입력과 일치한다는 것인데, 나에게 주 = A 옥타브 = 1을주는 것은 잘못된 것입니다.
EDIT : 물론 이것은 -8과 같은 잘못된 옥타브도 허용하지만 일치 후에 필터링 할 수 있습니다.
이것은 Objective-C 프로젝트의 일부로 ICU regex flavor를 사용합니다.
제안 사항?
하나는 수정했지만 다른 하나는 수정하지 않았습니다. 지금 고치고있어. 좋은 캐치! – gregkow