Istilah apa dalam regex saya yang harus saya gunakan sebagai ganti / b untuk tidak terganggu oleh karakter kontrol di MS Word atau brethern nya?


0

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.


2
Bisakah Anda memberikan contoh nyata tentang apa yang Anda coba lakukan?
m4573r

Saya punya ini: 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. tailcharhanyalah sebuah variabel yang menampung semua karakter yang ingin saya tandakan dan diakhiri dengan string.
EFH

Memperbarui tautan ke versi terbaru perpustakaan.
EFH

Jawaban:


1

Dengan contoh yang Anda berikan di komentar, saya sarankan untuk hanya menghapus \bdi 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:

hotstrings("([^a-zA-Z])oic"tailchar,"%$1%Officer in Charge (OIC)%$2%")

Tapi sayangnya saya tidak bisa menguji ini karena saya tidak bisa membuat DynamicHotstring bekerja: /


Saya suka menambahkan negatif di bagian depan. Ini adalah pendekatan yang akan saya jelajahi.
EFH

Saya melihat pertanyaan masa lalu saya dan menemukan yang basi ini. Tebak sesuatu yang mengkilap menarik perhatianku. Saya mengambil ide Anda dan menjadikannya operasi di belakang agar tidak perlu lulus% 1%. Ini adalah apa yang saya diuji dan sukses dengan misalnya diberikan: 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!
EFH

Ditingkatkan ke versi baru perpustakaan. Perbaikan ini tidak lagi berfungsi.
EFH

@ EFH Apakah itu berfungsi jika Anda hanya mengubah regex ke "oic"? Seperti dalam, apakah perpustakaan berfungsi sama sekali? Juga, jika itu berhasil untuk Anda sebelumnya, tidak ada alasan nyata untuk memutakhirkan, saya hanya akan menyimpan versi yang lama.
m4573r

Perpustakaan bekerja dalam dua bentuk. Lama dan baru. Yang baru kurang buggy dan lebih baik beradaptasi dengan lingkungan kerja saat ini dibandingkan dengan 4 tahun yang lalu. Masalah dalam Word dengan ekspansi teks gagal segera setelah perubahan gaya yang diprakarsai oleh stroke kecil. Meskipun saya berharap untuk menemukan pengawasan sederhana di pihak saya, itu bukan sesuatu yang saya akan banyak menderita karena tidak diperbaiki. Saya memiliki kueri di forum pengelola skrip ini saat ini. Saya akan melihat apakah itu menghasilkan buah untuk saya. Kemarin saya menghabiskan sebagian besar hari menjelajahi regex. Sama sekali tidak rugi!
EFH

0

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:

/\bsomething\b/

Membuat tebal opsional di kedua ujung:

/\b\u0002*something\u0002*\b/

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.


Saya akan mencari untuk menemukan bagaimana karakter yang tidak terlihat dikodekan dalam MS Word daripada dan menambahkannya ke regex. Terima kasih. Saya ingin memastikan bahwa saya tidak melewatkan sesuatu yang jelas dan mudah digunakan sebelum saya mulai mendaftarkan karakter yang tidak terlihat dalam sebuah variabel.
EFH
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.