Сканарио
Мне нужно взять подстроку из составленной строки. Условия совпадения:
строка начинается с 'section1:'
захваченная строка может быть разделена пробелом или разделенным тире списком буквенно-цифровых значений
если захваченная строка заканчивается определенным суффиксом ('-xx'), исключите этот суффикс из захваченной строки.
Примеры
section1:ypsilon : соответствует разделу 1, захватите 'ypsilon'
section1:ypsilon zeta : соответствует разделу 1, захватите 'ypsilon zeta'
section1:ypsilon-zeta : совпадает с разделом 1, возьмите 'ypsilon-zeta'
section1:ypsilon-xx : совпадает с разделом 1, взять "ypsilon", исключить "-xx"
section1:ypsilon zeta-xx : совпадает с разделом 1, взять "ypsilon zeta", исключить "-xx"
section1:ypsilon-zeta-xx : совпадает с разделом 1, взять "ypsilon-zeta", исключить "-xx"
section2:ypsilon : раздел 2 не соответствует
Решение на данный момент
^section1:([a-zA-Z0-9\- ]+)(\-xx)?$
Идея состоит в том, чтобы получить группу 1, тогда как группа 2 не является обязательной. Демо.
Вопрос
К сожалению, суффикс соответствует определению group1, так как это буквенная строка с дефисом. Таким образом, полученные захваченные строки не исключают суффикс.
Любая подсказка?