Необходима помощь в изменении регулярного выражения, который ищет в тексте "аккорды" для отображения картинок и перевода в другую тональность.
Код приведем ниже
// ищет основную часть аккорда для перевода в другую тональность
private $search_trans = '`([ABCDEFGH][b#]?(?=\s(?![a-zA-Z])|(?=(2|5|6|7|9|11|13|6\/9 |7\-5|7\-9|7\#5|7\#9|7\+5|7\+9|7b5|7b9|7sus2|7sus4| add2|add4|add9|aug|dim|dim7|m\|maj7|m6|m7|m7b5|m9|m1 1|m13|maj|maj7|maj9|maj11|maj13|mb5|m|sus|sus2|sus4|\))(?=(\s|\/ )))|(?=(\/|\.|-|\(|\)))))`';
// Ищет аккорд целиком
private $search_img = '`([ABCDEFGH][b#]?[m]?[\(]?(2|5|6|7|9|11|13|6\/9|7\-5|7\-9|7 \#5|7\#9|7\+5|7\+9|7b5|7b9|7sus2|7sus4|add2|add4|add9|aug|dim|dim 7|m\|maj7|m6|m7|m7b5|m9|m11|m13|maj|maj7|maj9|maj11|maj13|mb5|m|s us|sus2|sus4)?(\))?)(?=\s|\.|\)|-|\/)`';
Примерный текст песни
Вступление: :4/4: Emadd9 Emsus4add9 | Emadd9 Emsus4add9
:6/4: Emadd11 Emsus4add9 Em | :4/4: H H Hsus4 H
Em Emsus4add9
Только там, где алым метит
Em Am/E
Солнце спину горизонта,
Em Am6/E
Где сирень кудрявит ситец,
Em Hsus4 H
И поёт прибой;
Em Emsus4add9
Где пушистая пшеница
Em Am/E
И, как лезвие, осока,
Em Am6/E
Где парящей в небе птицей
Em Hsus4 H
В чем заключается проблема регулярного выражения:
1. Не находит двухсложные аккорды типа Emsus4add9 Emadd11
2. аккорд Am6/E воспринимает за два аккорда, а хочется чтобы в search_img он как целый находил.