L'expression régulière (abrégée en regex ou regexp) est une séquence de caractères qui forme un motif de recherche principalement utilisé pour la correspondance de motifs avec des chaînes ou la correspondance de chaînes. La fonctionnalité est similaire aux opérations de chercher et remplacer avec plus de complexité et de spécificité ou comme méthode pour exclure un contenu défini. Voir l'entrée wikipedia pour une description détaillée des regex et un tableau des caractères utilisés.
Pour utiliser plusieurs regex à la fois, insérez un caractère de pipeline | entre elles.
Les regex peuvent être utilisées dans les champs de filtre, de recherche et de remplacement dans l'éditeur CAT, dans les champs source et cible de la fonction de recherche de contenu, pour la fonction dans les paramètres d'importation de fichiers et pour personnaliser les règles de segmentation. Le convertisseur et l'éditeur de bureau CAT utilisent Java regex, tandis que l'éditeur web CAT et la recherche dans TMS utilisent le moteur Lucene regex.
Astuce
Les chatbots utilisant l'IA peuvent être très efficaces pour générer et vérifier les regex.
Utilisez des outils comme Regex101 pour tester les regex avec différentes entrées.
Important
Phrase prend en charge Java regex, mais rejettera les expressions régulières complexes pour protéger le système d'une surcharge. Les regex complexes sont celles avec des quantificateurs (sauf les possessifs) sur des groupes qui contiennent d'autres quantificateurs (sauf les possessifs).
Exemples pour convertir du texte en balises lors de l'importation de fichiers et en utilisant des regex dans l'éditeur de bureau pour les fonctions de filtrage et de recherche et remplacement :
|
Exemple |
Description |
|---|---|
|
<[^>]+> |
représente <html_tag> |
|
\{[^\}]+\} |
représente {variable}, |
|
\[[^\]]+\] |
représente [variable], |
|
\[\[.+?\]\] |
représente [[aa[11]bb]]. |
|
\$[^\$]+\$ |
représente $operator_Name1$. |
|
\d+ |
représente des nombres. Aussi, [0-9]+ |
|
[A-Za-z0-9] |
représente tout caractère alphanumérique. |
|
.+\@.+\..+ |
adresse e-mail name@domain.com |
|
\d{4}[-]\d{2}[-]\d{2} |
la date 2018-08-01 |
|
\s$ |
un espace à la fin du segment |
|
^\s |
un espace au début du segment |
|
\s\s |
un double espace |
|
^\d |
un chiffre au début du segment |
|
\w+\s\s\w+ |
un double espace entre les mots |
|
\s\n |
une nouvelle ligne précédée de tout caractère d'espace |
|
\S\n |
une nouvelle ligne précédée de tout caractère non-espace |
|
<[^>]+>|\$[^=]+= |
convertit les variables php et le code html ($svariable['name'] = ) |
|
^\s*\'[^:]+: |
convertit la clé de champ javascript avec des espaces ajoutés au début de la ligne ( 'key' :) |
|
\{\{[^\}]+\}\}|\'[^']+\' |
ne traduit pas {{text here}} '{{text here}} contenu et le convertit en balises |
|
\{\{[^\}]+\}\} |
représente le texte entre les crochets {{}} |
|
\([^\)]+\) |
représente le texte entre les crochets () |
|
\^[^\^]+\^ |
représente le texte entre les marques ^ |
|
\@[^\@]+\@ |
représente le texte entre les marques @ |
|
\^[^\^\?]+\? |
représente le texte entre les marques ^ et ? |
|
\'[^']+\' |
représente le texte entre les apostrophes ' ' |
|
\"[^"]+\" |
représente le texte entre les guillemets "" |
|
\%[^\%]+\% |
représente le texte entre les symboles % |
|
\$\{[^}]*\} |
représente le texte entre ${ et }, par exemple ${variable} |
|
\$[a-zA-Z0-9\-_]+ |
représente une chaîne qui commence par $, par exemple $appName |
|
(?<=\: ").*(?=") |
représente le texte à l'intérieur des guillemets doubles après un deux-points et un espace, par exemple |
|
(?<=\: ').*(?=') |
représente le texte à l'intérieur des guillemets simples après un deux-points et un espace, par exemple |
|
(?<=\=).*(?=) |
représente le texte après un signe égal et sans espace, par exemple clé=valeur |
|
(.*)= |
représente le texte avant un signe égal |
|
=(.*) |
représente le texte après un signe égal |
|
\/\/\S* |
représente des hyperliens. Aussi, https:\/\/\S* |
|
</?mrk[^>]*> |
représente les balises HTML/XML ouvertes et fermées |
Remarque
Puisque les fichiers TXT dans TMS sont traités ligne par ligne, certaines expressions régulières qui fonctionnent dans d'autres environnements peuvent ne pas fonctionner comme prévu.
Exemples d'expressions régulières lors de l'importation d'un texte spécifique :
-
## MessageErreur ##1## Le nombre doit être supérieur à 0. ##Z##
Pour importer du texte entre ##1## et ##Z##, utilisez regex :
(?<=##1## ).*(?= ##Z##) -
MessageErreur ("Le nombre doit être supérieur à 0.")
Pour importer du texte entre (" et "), utilisez regex :
(?<=\(").*(?="\)) -
'messageErreur' = 'Le nombre doit être supérieur à 0.'
Pour importer du texte après le signe = et entre ' et ', utilisez regex :
(?<=\= ').*(?=') -
errorMessage = "ceci doit être traduit"
Pour importer du texte après le signe = et entre 'et', utilisez regex :
(?<=\= ").*(?=") -
msgstr ("Le nombre doit être supérieur à 0.")
Pour importer des chaînes msgstr dans des fichiers PO monolingues en utilisant un filtre TXT, utilisez regex :
(?<=msgstr ").*(?=") -
# Remarque : Ceci est une note
Pour exclure les lignes commençant par #, utilisez regex :
(^[^#].*) -
valeurs '126', 'DCeT', 'Texte (en)'
Pour importer uniquement le texte entre guillemets et avec (en), tel que Texte (en)', utilisez regex :
(?<=')[^']*\(en\)(?=')
Exemple de structure JSON :
{
"liste": {
"id": "1",
"value": "text 1 for translation."
},
"texte": {
"id": "2",
"value": "text 2 for translation."
},
"menu": {
"id": "3",
"value": "text 3 for translation."
},"array": ["blue","green"],"arrays": [{ "color": "blue", "title": "BLUE"
}, { "color": "green", "title": "GREEN" } ]}
-
pour importer chaque valeur indépendamment du niveau, utilisez :
(^|.*/)valeur -
pour importer une seule valeur d'une liste, utilisez :
liste/valeur -
pour importer une valeur d'une liste et/ou d'un menu, utilisez l'opérateur | (OU) :
liste/valeur|menu/valeur -
pour importer uniquement la première instance d'une valeur d'un menu, utilisez :
menu\[1\]/valeur -
pour importer le contenu d'un tableau JSON suivant une certaine clé, utilisez :
(^|.*/)tableau\[.*\] -
pour importer le contenu d'un tableau spécifique d'objets, utilisez :
(^|.*/)tableaux\[.*\].*
Exemple de fichier YAML :
title: A
text: translate A
categories:
title: B
text: translate B
categories:
title: C
text: translate C
categories:
content:
title: D
text: translate D
regex pour importer :
-
seulement 'traduire A' :
texte -
seulement 'traduire C' :
catégories\[2\]/texte -
seulement 'traduire D' :
catégories\[\d+\]/contenu[\1\]/texte -
tout le texte :
texte|catégories\[\d+\]/texte|catégories\[\d+\]/contenu[\d+\]/texte
Okapi, Java et Unicode sont utilisés pour les règles de segmentation dans les fichiers .SRX.
Utiliser des regex dans les fichiers .SRX est complexe et une connaissance de base de l'utilisation des expressions régulières est recommandée avant d'essayer de travailler avec elles.
Les règles Nobreak (abréviations, etc.) et les règles Break (fin de phrase avec un point, etc.) se trouvent dans les fichiers .SRX.
|
Exemple |
Description |
|---|---|
|
[\p{C}] |
Caractère de contrôle invisible. |
|
[\p{Z}] |
Espace blanc |
|
[\p{Lu}] |
Une lettre majuscule qui a une variante minuscule. |
|
[\p{N}] |
Tout type de caractère numérique. |
|
\Q ... \E |
Début et fin d'une citation - (\QApprox.\E). Ceci est utilisé pour les abréviations. |
|
\t |
Tabulateur |
|
\n |
Nouvelle ligne |
|
\u2029 |
Séparateur de paragraphe |
|
\u200B |
Espace de largeur nulle |
|
\u3002 |
Point plein idéographique |
|
\ufe52 |
Petit point plein |
|
\uff0e |
Point plein de largeur complète |
|
\uff61 |
Point plein idéographique de largeur demi |
|
\ufe56 |
Petit point d'interrogation |
|
\uff1f |
Point d'interrogation de largeur complète |
|
\u203c |
Double point d'exclamation |
|
\u2048 |
Point d'interrogation d'exclamation |
|
\u2762 |
Ornement de point d'exclamation lourd |
|
\u2763 |
Ornement de point d'exclamation lourd en forme de cœur |
|
\ufe57 |
Petit point d'exclamation |
|
\uff01 |
Point d'exclamation en pleine largeur |
|
`[\u0080-\uFFFF]+` |
Caractères de la plage Unicode \u0080 à \uFFFF |
|
`[\u00a8\u00b9\u00c4]+` |
Une ou plusieurs occurrences des caractères Unicode spécifiés à l'intérieur des crochets, par exemple \u00a8 + \u00b9 + \u00c4 |
|
Contrôle QA |
Expression régulière source |
Expression régulière cible |
|---|---|---|
|
Nombres supplémentaires dans la cible |
|
|
|
Ordre des balises (non appariées, pour les segments avec 3 balises). Ajustez l'expression régulière en fonction du nombre requis de balises. |
|
|
|
Ordre des balises (appariées, pour les segments avec 3 balises). Ajustez l'expression régulière en fonction du nombre requis de balises. |
|
|
|
Espaces avant les balises |
|
|
|
Espaces après les balises |
|
|
|
Pas d'espace avant les balises |
|
|
|
Caractères non blancs après les balises appariées |
|
|
|
Crochets carrés manquants |
|
|
|
Parenthèses rondes manquantes |
|
|
|
Utilisez les expressions régulières suivantes pour vérifier le même nombre de nombres décimaux identiques, en utilisant le séparateur décimal spécifique à la langue appropriée. |
|
|