Saya menggunakan Dynamic Hotstrings sebagai bagian dari implementasi AutoHotkey saya . Ini telah menjadi alat yang sangat berharga dalam pembelajaran Ekspresi Reguler.
Saat ini saya banyak menggunakannya untuk ekspansi teks dalam proses harian saya di kantor. Namun saya mengalami masalah dalam perangkat lunak pengolah kata saat menggunakan format teks. Dalam kasus yang saya cetak tebal, cetak miring, atau memberikan modifikasi pada format di awal string yang jika tidak akan diperluas, itu tidak akan berkembang karena karakter kontrol adalah bagian dari string. Saya telah menggunakan \ b sebagai saklar awal di regex saya.
Saya mencari untuk melihat apakah ada jalan pintas di dunia regex untuk menjelaskan jenis karakter ini tanpa menghitungnya dengan tangan. Apakah itu ada?
Jika tidak, apakah ada referensi praktis dari semua karakter kontrol yang perlu saya pertanggungjawabkan dalam MS Word?
Terima kasih atas waktu Anda.
sumber
hotstrings("\boic"tailchar,"Officer in Charge (OIC)%$1%")
yang mengambil teks "oic" dan memperluasnya bahkan di sini. Tentu saja ekspresi juga "melihat" ctrl-b jika saya mengetikkan yang sama dalam pengolah kata dalam huruf tebal.tailchar
hanyalah sebuah variabel yang menampung semua karakter yang ingin saya tandakan dan diakhiri dengan string.Jawaban:
Dengan contoh yang Anda berikan di komentar, saya sarankan untuk hanya menghapus
\b
di awal. Ini tentu saja tidak optimal, dan mungkin memicu ekspansi ketika Anda tidak menginginkannya, tetapi seberapa sering Anda mengetik kata-kata yang berakhir dengan "oic"?Solusi yang lebih elegan adalah memiliki sesuatu seperti ini:
Tapi sayangnya saya tidak bisa menguji ini karena saya tidak bisa membuat DynamicHotstring bekerja: /
sumber
hotstrings("(?<=[^a-zA-z])oic"tailchar,"Officer in Charge (OIC)%$1%")
. Ini bekerja dengan berani, saya akan berkomentar lebih lanjut jika berantakan dalam praktik. Saya mungkin akhirnya melakukan 'mencari dan mengganti' grosir!Ekspresi reguler hanya dapat menangani apa yang Anda atur. Mereka tidak berasumsi bahwa Anda memiliki karakter yang tebal, atau jenis pemformatan lainnya. Anda harus memasukkan karakter-karakter ini dalam ekspresi reguler Anda jika ingin menangkapnya.
Contoh:
Membuat tebal opsional di kedua ujung:
Saya akan melihat apakah ada cara untuk menghapus ini dalam program yang Anda gunakan. Satu-satunya cara Anda dapat menghindari keharusan menggunakan karakter itu sendiri adalah jika program menghapusnya sebelum dicocokkan dengan ekspresi reguler.
sumber