UltiSnips regex macthing

Oct 16 2020

Tôi muốn có khả năng chuyển đổi một phương trình nội tuyến trong latex thành một phương trình hiển thị.

Vì vậy, tôi muốn $something$trở thành

$$ something $$

Cố gắng của tôi là:

snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet

Sự hiểu biết của tôi là điều đó (.+)sẽ khớp với bất kỳ ký tự nào 1 hoặc nhiều lần (được bắt trong một nhóm) và \1sẽ in kết quả trùng khớp đó trong nhóm.

Tôi cũng đã thử sử dụng nội suy python nhưng cũng !p snip.rv = match.group(1)không thành công.

Cả hai nỗ lực chỉ dẫn đến một tab được chèn. Có ý kiến ​​gì không?

Trả lời

1 RicardoKullock Oct 18 2020 at 01:40

Do nhận xét của Jake Grossman, cuối cùng tôi nhận ra trình $kích hoạt trong regex nên được thoát: (Cũng phải sử dụng phép nội suy python)

snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet

Trình kích hoạt ngay sau đó snippetsẽ khớp với bất kỳ thứ gì giữa $và nắm bắt nó trong một nhóm (với ())

Trong phép nội suy python, snip.rvlà viết tắt của "giá trị trả về" và match.group(1)in nhóm đầu tiên trong regex (nhóm duy nhất trong trường hợp này)