Мне нужно разделить множество названий аккордов на тональность и тип аккорда:
name = C
name = C#
name = Db
name = C#maj7b5
name = Cmaj7b5
name = Dbmaj7b5
поэтому корень всегда будет буквой сам по себе или с # или b, буквой сам по себе или только с # или b, корень должен будет = maj по умолчанию.
root = C
chord = maj
root = C#
chord = maj
root = Db
chord = maj
root = C#
chord = maj7b5
root = C
chord = maj7b5
root = Db
chord = maj7b5
Я могу получить корневое имя:
name1 = string.match(name, "%a#")
name2 = string.match(name, "%ab")
name3 = string.match(name, "%a")
если я получу нулевое значение в name1 и name2, то root = name3. Просто нужно название аккорда также.
РЕДАКТИРОВАТЬ: используется:
chord, pos = nil, 0
chord, p = string.match(region_name, "=%s+([^\n]+)()", pos)
if not p then end
pos = p
root, chord = string.match(region_name, "(%w[#b]?)(.*)$")
if not chord or #chord == 0 then chord = "maj" end