UltiSnips regex macthing

Oct 16 2020

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

1 RicardoKullock Oct 18 2020 at 01:40

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)