Existe-t-il un moyen de rechercher un modèle dans un document MS Word?

30

Existe-t-il un moyen de rechercher des modèles dans un document MS Word au lieu d'une correspondance exacte?

J'ai un document où toutes les décimales ont été écrites au /lieu de .. Par exemple, 1.02a été écrit comme 1/02, car la typographie persane utilise /au lieu de .pour le point décimal.

Comme il /n'est pas seulement utilisé pour les décimales et qu'il a d'autres applications, par exemple les fractions, le pourcentage, etc., existe-t-il un moyen de trouver un modèle comme N/Mdans un document Word, où Ndénote une décimale et Maffiche également un autre nombre décimal?

codezombie
la source
2
Comment est-ce que ce n'est pas un doublon plus de 5 ans après le lancement de Super User?
Peter Mortensen
1
Un point de départ peut être l' expression régulière pour rechercher et remplacer dans Microsoft Word .
Peter Mortensen
Eh bien, il serait difficile de le déplacer dans le bloc-notes s'il y avait un autre texte au milieu, supposons que l'on écrit un article de journal (veuillez utiliser du latex à la place) afin qu'ils ne puissent pas le déplacer hors du mot, ou quelque chose de cette nature, ils perdrait tous les autres formats.
Charm_quark
1
Je viens de vérifier: les dernières versions de MS Word stockent les documents Word (* .docx) sous forme de documents XML compressés. Une fois que vous savez comment cette structure fonctionne, vous pouvez décompresser votre fichier * .docx et faire une correspondance de modèle dans les structures de fichiers XML résultantes.
Dominique
@Dominique c'est intéressant. Je ne savais pas que
codezombie

Réponses:

12

comme 'N / M' dans un document Word, où N désigne une décimale et M montre également un autre nombre décimal

Juste pour une recherche, vous pouvez utiliser ^#/^#comme paramètre de recherche. Sous les autres options et recherchez Spécial , il existe d'autres options qui peuvent être utiles.

Nb:, ^#est une décimale, donc si vous recherchez spécifiquement x / yy, ce serait ^#/^#^#etc.

remplacer,

Il s'agit d'une meilleure option, effectuez une recherche avec ([0-9])/([0-9])et remplacez par \1.\2, et activez «utiliser des caractères génériques»

Charm_quark
la source
Merci. cela trouve les hits. mais Word n'accepte pas ^ #. ^ # pour la pièce de rechange. Je veux laisser intacts les chiffres entourant '/' et remplacer '/' par '.'.
codezombie
1
essayez de faire une recherche avec ceci, "([0-9]) / ([0-9])" et remplacez par "\ 1. \ 2", supprimez le guillemet double. et activer "utiliser des caractères génériques"
Charm_quark
37

Mot

Utiliser l'implémentation d'expressions régulières de Microsoft

Appuyez sur CTRL+ H»cliquez sur Plus » Activer l' utilisation des caractères génériques

  • Trouver quoi: ([0-9]{1,2})/([0-9]{2})
  • Remplacer par: \1.\2

entrez la description de l'image ici entrez la description de l'image ici

Cela ressemble à un modèle de recherche fou, alors examinons-le:

  • [0-9] représente une seule valeur numérique (0,1,2,3,4,5,6,7,8 et 9)
  • {1,2}est utilisé pour compter les occurrences du caractère ou de l'expression précédente. Dans notre cas, cela signifie: Rechercher uniquement un ou deux chiffres .

    Attention: si vous utilisez un mot allemand, vous devez utiliser ;comme séparateur au lieu de,

  • /n'a pas de signification particulière. Il recherche littéralement une barre oblique
  • ()les crochets ronds sont importants. Ils divisent le motif en séquences logiques afin que nous puissions utiliser plus tard \1, \2... \ndans notre motif de remplacement. De cette façon, nous préservons les valeurs

En savoir plus sur la section Les expressions, pièce par pièce dans l'article de support de Microsoft ou sur le site Word de Graham Mayor


VBA (meilleure solution)

Je vous suggère d'utiliser une méthode VBA qui adhère davantage à la valeur par défaut des autres moteurs RegEx. Ils sont mieux documentés et plus de personnes peuvent vous aider.

Cette macro demande un modèle RegEx pour rechercher dans tout le document et le remplacer par votre chaîne donnée.

Appuyez sur ALT+ F11pour ouvrir l'éditeur VBA. Collez le code n'importe où et exécutez-le avecF5

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
  • Trouver quoi: (?!\d)/(?=\d)
  • Remplacer par: .

entrez la description de l'image icientrez la description de l'image ici

nixda
la source