Ваш вопрос не включает то, как вы хотите, чтобы ваш окончательный фрагмент кода выглядел, так что вот простой пример фрагмента, который объединяет все три из этих операций в одну, которую вы можете настроить по мере необходимости.
<snippet>
<content><![CDATA[
# ${310}
IS-${310/(ae)|(?:(\w{2}-))|(?:(\/))/(?1\U$1:)(?2:)(?3:_)/g}-BUSINESS
]]></content>
<tabTrigger>test</tabTrigger>
</snippet>
Общая структура ${variable/regex/format_string/options}
. Регулярное выражение использует регулярное выражение Boost для библиотеки , а строка формата использует строку в формате библиотеки Boost (см. Стр. фрагменты в неофициальной документации для получения дополнительной информации).
Строка формата Boost поддерживает условную замену в виде (?Ntrue:false)
, где для группы захвата N
заменой является текст true
, если совпадение захватывало что-либо, или false
, если нет.
Здесь каждое из возможных чередований в регулярном выражении фиксируется (или нет), и замена указывает, на что должна расширяться эта соответствующая группа. Обратите внимание, что, когда вы делаете что-то подобное, вам может понадобиться учитывать взаимодействие между различными возможными совпадениями.