C'è un modo per cercare un modello in un documento MS Word?


30

Esiste un modo per cercare schemi all'interno di un documento MS Word anziché una corrispondenza esatta?

Ho un documento in cui tutti i decimali sono stati scritti come /anziché .. Ad esempio, 1.02è stato scritto come 1/02, perché la tipografia persiana utilizza /invece che .per il punto decimale.

Poiché /non viene utilizzato solo per i decimali e ha altre applicazioni, ad esempio frazioni, percentuali, ecc., C'è un modo per trovare un modello come N/Mall'interno di un documento di parole, dove Ndenota un decimale e Mmostra anche un altro numero decimale?


2
In che modo questo non è un duplicato più di 5 anni dopo il lancio di Super User?
Peter Mortensen,


Beh, sarebbe difficile spostarlo nel blocco note se ci fosse un altro testo nel mezzo, supponiamo che uno stia scrivendo un articolo di giornale (si prega di usare il lattice invece) in modo che non possano spostarlo di parola, o qualcosa del genere, loro perderebbe tutta l'altra formattazione.
Charm_quark,

1
Ho appena verificato: le ultime versioni di MS Word memorizzano i documenti di Word (* .docx) come documenti basati su XML zippati. Una volta che sai come funziona questa struttura, puoi decomprimere il tuo file * .docx e fare una corrispondenza del modello nelle strutture di file XML risultanti.
Dominique,

@Dominique che è interessante. Non lo sapevo
codezombie,

Risposte:


12

come 'N / M' all'interno di un documento word, dove N indica un decimale e M mostra anche un altro numero decimale

Solo per una ricerca puoi usare ^#/^#come parametro di ricerca. Sotto le altre opzioni, e trova Speciale , ci sono alcune altre opzioni che possono essere utili.

Nb:, ^#è una cifra decimale, quindi se stai cercando specificamente x / yy, allora sarebbe ^#/^#^#ecc.

Rimpiazzare,

Questa è un'opzione migliore, esegui la ricerca con ([0-9])/([0-9])e sostituisci con \1.\2e abilita "usa caratteri jolly"


Grazie. questo trova i successi. ma Word non accetta ^ #. ^ # per la parte di sostituzione. Voglio lasciare intatte le cifre che circondano '/' e sostituire '/' con '.'.
codezombie,

1
prova a fare una ricerca con questo, "([0-9]) / ([0-9])" e sostituiscilo con "\ 1. \ 2", estrai la doppia virgoletta. e abilita "usa caratteri jolly"
Charm_quark il

37

parola

Utilizzare l'implementazione di Microsoft di espressioni regolari

Premi CTRL+ H»fai clic su Altro » Abilita Usa caratteri jolly

  • Trovare cosa: ([0-9]{1,2})/([0-9]{2})
  • Sostituirlo con: \1.\2

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Sembra un modello di ricerca folle, quindi esaminiamolo:

  • [0-9] sta per un singolo valore numerico (0,1,2,3,4,5,6,7,8 e 9)
  • {1,2}viene utilizzato per contare le occorrenze del carattere o dell'espressione precedente. Nel nostro caso ciò significa: cerca solo uno o due numeri .

    Attenzione: se stai usando una parola tedesca, devi usare ;come separatore invece di,

  • /non ha un significato speciale. Cerca letteralmente una barra
  • ()le parentesi tonde sono importanti. Dividono il modello in sequenze logiche in modo da poterlo utilizzare in seguito \1, \2... \nnel nostro modello di sostituzione. In questo modo preserviamo i valori

Maggiori informazioni sulla sezione Le espressioni, pezzo per pezzo nell'articolo di supporto di Microsoft o sul sito Word di Graham Mayor


VBA (soluzione migliore)

Ti suggerisco di utilizzare un metodo VBA che aderisce maggiormente all'impostazione predefinita da altri motori RegEx. Sono meglio documentati e più persone possono aiutarti.

Questa macro richiede un modello RegEx per cercare nell'intero documento e sostituirlo con la stringa specificata.

Premi ALT+ F11per aprire l'editor VBA. Incolla il codice ovunque ed eseguilo conF5

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
  • Trovare cosa: (?!\d)/(?=\d)
  • Sostituirlo con: .

inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.