UltiSnips regex macthing
Saya ingin kemungkinan mengubah persamaan sebaris dalam lateks menjadi persamaan tampilan.
Jadi saya ingin $something$menjadi
$$ something $$
Upaya saya adalah ini:
snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet
Pemahaman saya adalah bahwa (.+)akan mencocokkan karakter apa pun 1 kali atau lebih (ditangkap dalam grup), dan \1akan mencetak kecocokan dalam grup.
Saya juga mencoba menggunakan interpolasi python tetapi !p snip.rv = match.group(1)tidak berhasil juga.
Keduanya mencoba hanya mengarah ke tab yang disisipkan. Ada ide?
Jawaban
Karena komentar Jake Grossman, saya akhirnya menyadari $pemicu di regex harus di-escape: (Juga harus menggunakan interpolasi python)
snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet
Pemicu tepat setelahnya snippetakan cocok dengan apa pun di antara $dan menangkapnya dalam grup (dengan ())
Dalam interpolasi python, snip.rvsingkatan dari "return value" dan match.group(1)mencetak grup pertama di regex (satu-satunya dalam kasus ini)