UltiSnips regex macthing

Oct 16 2020

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

1 RicardoKullock Oct 18 2020 at 01:40

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)