web-dev-qa-db-fra.com

Est-il possible de rechercher un motif dans un document MS Word?

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 sous la forme / au lieu de .. Par exemple, 1.02 a été écrit avec 1/02, car la typographie persane utilise / au lieu de . pour le point décimal.

Comme / n'est pas seulement utilisé pour les décimales, il a d'autres applications, par exemple, des fractions, un pourcentage, etc., existe-t-il un moyen de trouver un motif tel que N/M dans un document Word, où N dénote un décimal et M nombre décimal?

28
codezombie

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

Juste pour une recherche, vous pouvez utiliser ^#/^# comme paramètre de recherche. Sous les options more et find Special , il existe d'autres options. cela peut être utile.

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

remplacer,

C’est une meilleure option. Effectuez une recherche avec ([0-9])/([0-9]) et remplacez-la par \1.\2, puis activez "utiliser des caractères génériques".

12
Charm_quark

Mot

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

Presse CTRL+H "Cliquez sur Plus " Activer Utiliser des caractères génériques

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

enter image description hereenter image description here

Cela ressemble à un motif 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édent. Dans notre cas, cela signifie: Recherchez 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 cherche littéralement une barre oblique
  • () les parenthèses sont importantes. Ils divisent le modèle en séquences logiques afin que nous puissions utiliser ultérieurement \1, \2...\n dans notre modèle 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 site Word de Graham Mayor


VBA (meilleure solution)

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

Cette macro demande à un motif RegEx de rechercher dans tout le document et de le remplacer par votre chaîne donnée.

Presse ALT+F11 pour ouvrir l'éditeur VBA. Collez le code n'importe où et exécutez-le avec F5

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

enter image description hereenter image description here

35
nixda