Altova DiffDog 2024 Enterprise Edition

Exemple : Remplacer du texte en utilisant des expressions régulières

Accueil Préc Haut Suivant

Cet exemple montre comment chercher et remplacer du texte à l'aide d'expressions régulières. Dans la plupart des cas, la recherche et le remplacement de texte est une opération simple ne nécessitant pas l'utilisation d'expressions régulières. Néanmoins, dans certaines instances, il se peut que vous ayez à manipuler des textes qui ne permettent pas des opérations de recherche et de remplacement. Par exemple, vous avez un fichier XML de plusieurs milliers de lignes et que vous devez renommer certains éléments dans une opération, sans toucher au contenu qui se trouve à l'intérieur. Autre exemple : vous souhaitez changer l'ordre de plusieurs attributs d'un élément. Vous pourrez recourir aux expressions régulières, en éliminant une grande partie du travail que vous auriez dû effectuer manuellement normalement.

 
 

Exemple 1 : renommer les éléments

L'échantillon de code ci-dessous contient une liste de livres. Si vous souhaitez remplacer l'élément <Category> de chaque livre en <Genre>, une des possibilités est d'utiliser des expressions régulières.

 

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="books.xsd">
  <book id="1">
    <author>Mark Twain</author>
    <title>The Adventures of Tom Sawyer</title>
    <category>Fiction</category>
    <year>1876</year>
  </book>
  <book id="2">
    <author>Franz Kafka</author>
    <title>The Metamorphosis</title>
    <category>Fiction</category>
    <year>1912</year>
  </book>
  <book id="3">
    <author>Herman Melville</author>
    <title>Moby Dick</title>
    <category>Fiction</category>
    <year>1851</year>
  </book>
</books>

 

Pour obtenir le résultat souhaité, suivre les étapes suivantes :

 

1.Appuyer sur Ctrl+H pour ouvrir la fenêtre Chercher et remplacer.

2.Cliquer sur Utiliser expression régulière _ic_find_regex.

3.Dans le champ Chercher, saisir le texte suivant : <category>\(.+\)</category> . Cette expression régulière correspond à tous les éléments category, et ceux-ci sont marqués.

inc-RegexExample01

Afin de correspondre au texte intérieur de chaque élément (qui n'est pas connu à l'avance), nous utilisons l'expression balisée \(.+\) . L'expression \(.+\) signifie "correspond avec une ou plusieurs occurrences d'un caractère, dans ce cas .+ , et se souvenir de cette correspondance".  Comme indiqué dans l'étape suivante, nous aurons besoin de la référence à l'expression balisée ultérieurement.

 

4.Dans le champ Remplacer, saisir le texte suivant : <genre>\1</genre> . Cette expression régulière définit le texte de remplacement. Veuillez noter qu'elle utilise une back-reference \1 à l'expression balisée précédemment du champ Chercher. Dans d'autre mots, \1 dans ce contexte signifie "le texte intérieur de l'élément actuellement correspondant <category>".

5.Cliquer Remplacer tout _ic_regex_replaceall et observer les résultats. Tous les éléments category sont maintenant renommés en genre.

 

Exemple 2 : changer l'ordre des attributs

L'échantillon de code XML ci-dessous contient une liste de produits. Chaque élément de produit contient deux attributs : id et un size. Si votre intention est de changer l'ordre des attributs id et size dans chaque élément product (autrement dit, l'attribut size devrait apparaître avant id). Un des moyen de régler ce problème est d'utiliser des expressions régulières.

 

<?xml version="1.0" encoding="UTF-8"?>
<products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="products.xsd">
  <product id="1" size="10"/>
  <product id="2" size="20"/>
  <product id="3" size="30"/>
  <product id="4" size="40"/>
  <product id="5" size="50"/>
  <product id="6" size="60"/>
</products>

 

Pour obtenir le résultat souhaité, suivre les étapes suivantes :

 

1.Appuyer sur Ctrl+H pour ouvrir la fenêtre Chercher et remplacer.

2.Cliquer sur Utiliser expression régulière _ic_find_regex.

3.Dans le champ Chercher, saisir le texte suivant : <product id="\(.+\)" size="\(.+\)"/> . Cette expression régulière correspond à un élément de produit dans le document XML. Veuillez noter que, pour correspondre à la valeur de chaque attribut (qui n'est pas connu à l'avance), une expression balisée \(.+\) est utilisée deux fois. Cette expression \(.+\) correspond à la valeur de chaque attribut (présumé avoir une ou plusieurs occurrences de tout caractère, donc .+ ).

4.Dans le champ Remplacer, saisir le texte suivant : <product size="\2" id="\1"/> . Cette expression régulière contient le texte de remplacement pour chaque élément de produit correspondant. Veuillez noter qu'elle utilise deux références \1 et \2 . Celles-ci correspond aux expressions balisées du champ Chercher. En d'autres termes, \1 signifie "la valeur de l'attribut id" et \2 signifie "la valeur de l'attribut size".

inc-RegexExample02

6.Cliquer Remplacer tout _ic_regex_replaceall et observer les résultats. Tous les éléments product ont été mis à jour de manière à ce que l'attribut size apparaisse avant l'attribut id.

© 2017-2023 Altova GmbH