Lampiran cepat dengan penurunan harga

0

Saya punya dokumen seperti ini:

A lot of text. 
insert:good graph:x
More text. insert: :y

Even more text. 

insert:another figure:z

Saya ingin mengubah semua insert:description:xuntuk ![description][A_Standardized_filepath/x.pdf]karena perintah yang ![][]akan melampirkan file ke saya penurunan harga-dokumen. Perhatikan bahwa x adalah variabel yang saya ubah, dan deskripsinya unik untuk setiap variabel. Jalur file, bagaimanapun, selalu sama. (Catatan yang ytidak memiliki deskripsi, yang saya selesaikan dengan menambahkan spasi.)

Ini akan memungkinkan saya mempercepat proses pembuatan dokumen.


Saya menggunakan Windows 7; Saya lebih suka menggunakan Notepad ++ untuk menulis.

pengguna1603548
sumber

Jawaban:

2

Saya tidak tahu notepad ++, tetapi jika telah menemukan dan mengganti menggunakan ekspresi reguler maka Anda harus dapat mengadaptasinya. Dalam vim, saya akan menggunakan:

:%s/insert:\([^:]*\):\([^ :]*\)/![\1][A_Standardized_filepath\/\2.pdf]/g

Cara %'bertindak pada setiap baris'; the sbegin the substitutecommand ( s/change this/to this/), dan the gon the end berarti 'bertindak pada setiap pertandingan pada sebuah garis' (sebagai lawan dari pertandingan pertama, yang merupakan perilaku default vim).

Dagingnya ada di bagian pertama. yang \(\)menunjukkan kelompok capture; karena notepad ++ relatif baru, saya harap Anda tidak perlu backslash di sana. Segala sesuatu di antara set pertama \(\)disebut sebagai \1di sisi kanan perintah (sekali lagi, ini mungkin berbeda di notepad ++: perl menggunakan $1, misalnya), segala sesuatu di antara set kedua \(\)disebut sebagai \2di sebelah kanan. sisi-sisi, dll.

[^:]berarti 'karakter apa pun kecuali untuk :', sedangkan [^ :]berarti 'karakter apa pun kecuali ruang atau :'. Ini mengasumsikan bahwa Anda tidak akan pernah memiliki ruang di bagian nama file konstruksi Anda.

Jika seseorang yang memiliki pengetahuan tentang notepad ++ hadir, mereka harus merasa bebas untuk mengkanibalisasi regex ini menjadi jawaban.

Evilsoup
sumber