Apakah ada cara untuk mencari pola dalam dokumen MS Word?

30

Apakah ada cara untuk mencari pola di dalam dokumen MS Word alih-alih kecocokan persis?

Saya memiliki dokumen di mana semua desimal ditulis sebagai /gantinya .. Misalnya, 1.02telah ditulis sebagai 1/02, karena tipografi Persia menggunakan /bukan .untuk titik desimal.

Seperti /tidak hanya digunakan untuk desimal, dan memiliki aplikasi lain, misalnya, pecahan, persentase, dll., Adakah cara untuk menemukan pola seperti N/Mdalam dokumen kata, di mana Nmenunjukkan desimal dan Mjuga menunjukkan angka desimal lain?

codezombie
sumber
2
Bagaimana ini bukan duplikat lebih dari 5 tahun setelah Super User diluncurkan?
Peter Mortensen
1
Titik awal mungkin adalah Ekspresi Reguler untuk Menemukan dan Mengganti dalam Microsoft Word .
Peter Mortensen
Yah akan sulit untuk memindahkannya ke notepad jika ada teks lain di tengah, mari kita asumsikan bahwa seseorang sedang menulis artikel jurnal (silakan gunakan lateks sebagai gantinya) sehingga mereka tidak dapat memindahkannya dari kata, atau sesuatu yang sifatnya seperti itu, mereka akan kehilangan semua format lainnya.
Charm_quark
1
Saya baru saja memverifikasi: versi MS Word terbaru menyimpan dokumen Word (* .docx) sebagai dokumen berbasis XML. Setelah Anda tahu bagaimana struktur ini bekerja, Anda dapat membuka zip file * .docx Anda dan melakukan pencocokan pola dalam struktur file XML yang dihasilkan.
Dominique
@Dominique itu menarik. Tidak tahu itu
codezombie

Jawaban:

12

seperti 'N / M' dalam dokumen kata, di mana N menunjukkan desimal dan M juga menunjukkan angka desimal lain

Hanya untuk pencarian Anda dapat menggunakan ^#/^#sebagai parameter pencarian Anda. Di bawah lebih banyak opsi, dan temukan Khusus , ada beberapa opsi lain yang dapat membantu.

Nb:, ^#adalah satu tempat desimal jadi jika Anda mencari secara spesifik untuk x / yy maka itu akan menjadi ^#/^#^#dll.

untuk menggantikan,

Ini adalah opsi yang lebih baik, lakukan pencarian dengan ([0-9])/([0-9])dan ganti dengan \1.\2, dan aktifkan "gunakan wildcard"

Charm_quark
sumber
Terima kasih. ini menemukan hit. tetapi Word tidak menerima ^ #. ^ # untuk bagian pengganti. Saya ingin meninggalkan angka di sekitar '/' utuh dan ganti '/' dengan '.'.
codezombie
1
coba lakukan pencarian dengan ini, "([0-9]) / ([0-9])" dan ganti dengan "\ 1. \ 2", keluarkan kutipan ganda. dan aktifkan "gunakan wildcard"
Charm_quark
37

Kata

Gunakan implementasi reguler ekspresi Microsoft

Tekan CTRL+ H»klik Lainnya » Aktifkan Gunakan wildcard

  • Menemukan apa: ([0-9]{1,2})/([0-9]{2})
  • Ubah dengan: \1.\2

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Ini terlihat seperti pola pencarian gila jadi mari kita memeriksanya:

  • [0-9] singkatan dari nilai numerik tunggal (0,1,2,3,4,5,6,7,8 dan 9)
  • {1,2}digunakan untuk menghitung kemunculan karakter atau ekspresi sebelumnya. Dalam kasus kami ini berarti: Cari hanya satu atau dua angka .

    Perhatian: Jika Anda menggunakan kata Jerman, Anda harus menggunakan ;sebagai pemisah,

  • /tidak memiliki arti khusus. Secara harfiah mencari garis miring
  • ()kurung bundar itu penting. Mereka membagi pola menjadi urutan logis sehingga kita nanti dapat menggunakan \1, \2... \ndalam pola ganti kami. Dengan cara ini kita mempertahankan nilai

Baca lebih lanjut di bagian Ekspresi, sepotong demi sepotong di artikel dukungan Microsoft atau di situs Word Graham Mayor


VBA (solusi yang lebih baik)

Saya menyarankan Anda untuk menggunakan metode VBA yang lebih mematuhi standar dari mesin RegEx lainnya. Mereka didokumentasikan dengan lebih baik dan lebih banyak orang dapat membantu Anda.

Makro ini meminta pola RegEx untuk mencari di seluruh dokumen dan menggantinya dengan string yang Anda berikan.

Tekan ALT+ F11untuk membuka editor VBA. Rekatkan kode di mana saja dan jalankan denganF5

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")    
    On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("Find what:")
    ActiveDocument.Range = _ 
        RegEx.Replace(ActiveDocument.Range, InputBox("Replace with:"))        

End Sub
  • Menemukan apa: (?!\d)/(?=\d)
  • Ubah dengan: .

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

nixda
sumber