UltiSnips regex macthing
Lateksteki bir satır içi denklemi bir ekran denklemine dönüştürme olasılığını istiyorum.
Bu yüzden $something$olmak istiyorum
$$ something $$
Benim girişimim şuydu:
snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet
Anladığım kadarıyla, bu (.+)herhangi bir karakterle 1 veya daha fazla kez eşleşecek (bir grupta yakalanmış) ve \1eşleşmeyi grupta yazdıracaktı.
Ayrıca !p snip.rv = match.group(1)başarılı olamadan python interpolasyonunu kullanmayı da denedim .
Her iki girişim de sadece bir sekmenin eklenmesine yol açar. Herhangi bir fikir?
Yanıtlar
Jake Grossman'ın yorumu nedeniyle, sonunda $normal ifadede tetikleyiciden kaçılması gerektiğini fark ettim : (Ayrıca python enterpolasyonunu kullanmak zorunda kaldım)
snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet
Tetik hemen sonra snippetarasında bir şey maç olacak $ve (bir grupta yakalama ())
Python enterpolasyonunda, snip.rv"dönüş değeri" anlamına gelir match.group(1)ve normal ifadedeki ilk grubu yazdırır (bu durumda tek grup)