Из документов:
(<? Name1-name2> Подвыражение)
(Определение балансировочной группы.) Удаляет
определение ранее
определенная группа name2 и хранит в
имя группы1 интервал между
ранее определенная группа name2 и
текущая группа. Если нет группы name2
определено, соответствие возвращается. Так как
удаляя последнее определение name2
раскрывает предыдущее определение
name2, эта конструкция позволяет стек
захватов для группы name2, которая будет использоваться
в качестве счетчика для отслеживания
вложенные конструкции, такие как скобки.
В этой конструкции name1 является необязательным.
Вы можете использовать одинарные кавычки вместо
угловые скобки; например,
(? Name1-name2 »).
Ваш пример работает, только если существует группа с именем B, уже определенная в регулярном выражении, и вы собираетесь делать то, что подразумевает A-B.
Если вы спрашиваете, может ли название группы содержать тире, нет. Тире имеет особое значение в именованных группах.
Для получения дополнительной информации см. пример в этом разделе.