J'essaie de faire correspondre certains textes, puis de les remplacer par le texte plus quelques caractères supplémentaires. Exemple de texte minimal:
#10 Oranges. These are citrus fruits
Sortie désirée:
#10 Oranges.
These are citrus fruits
Regex: (#\d{1,2}[^.]*\.)\s*
Remplacer par: $1\n
(J'ai Match using regular expressions
vérifié)
La regex correspond avec succès #10 Oranges.
. Cependant, la référence arrière numérotée ne remplace pas le texte par le groupe de capture, mais entre juste littéralement (la sortie littérale est $1\n
). J'ai également essayé d'utiliser une barre oblique inverse pour la référence numérique numérotée \1
et le résultat est le même.
Y a-t-il quelque chose qui me manque? Comment réinsérer le texte correspondant dans Google Documents à l'aide d'expressions régulières?
la source
Note: Capture groups only work with Google Sheets.
Voir support.google.com/docs/answer/62754#regular_expressionsRéponses:
Réponse courte
Au lieu d'utiliser la fonction intégrée de recherche et de remplacement, utilisez Google Apps Script ou un module complémentaire.
Explication
Sur la fonctionnalité Rechercher et remplacer de Google Documents, la partie Remplacer ne fonctionne pas avec les expressions régulières et elle ne fonctionne pas non plus avec la
replaceText()
méthode du service Documents dans le script Google Apps. Heureusement, la méthode de remplacement JavaScript fonctionne.Pour découvrir les bases de la création d'un script simple, voir https://developers.google.com/apps-script/overview
Code
Ce code est une adaptation de celui inclus dans la référence
Références
la source
Replace with regular expressions
)Petit hacky, mais il ne nécessite pas de script supplémentaire et couvrira probablement 99% de vos cas d'utilisation. Vous pouvez toujours utiliser des groupes de capture avec
RegexReplace
et référence dans le texte de remplacement par$1
ou$2
. Il suffit de diviser votre expression régulière en deux groupes de capture et de concaténer avec un caractère aléatoire (rarement utilisé) comme~
. Ensuite, vous pouvez prendre la valeur retournée entière de cela et remplacer~
par une nouvelle ligne:Pour plus d'informations sur la syntaxe d'expression régulière utilisée dans les feuilles de Google, voir la spécification re2
la source
Comme indiqué par l' utilisateur dans les commentaires
Remarque: les groupes de capture ne fonctionnent qu'avec Google Sheets.
la source