2009-08-25 5 views
0

j'ai un fichier PO avec un contenu comme:Utilisation d'expressions régulières avec « msggrep »

msgid "or" 
msgstr "or-translation" 

msgid "orand" 
msgstr "orand-translation" 

Je dois obtenir la traduction d'un msgid donné. En utilisant la commande "msggrep -K -e 'orand' template2.pot" je reçois la traduction de 'orand', et c'est ok. Mais quand j'utilise "msggrep -K -e 'ou" template2.pot "si retourne la traduction (' ou 'et' orand '). La commande "msggrep -K -e '^ ou" template2.pot "fonctionne comme prévu, renvoyant les deux traductions, mais" msggrep -K -e'^ou $ 'template2.pot "échoue car il ne renvoie rien. On dirait que le caractère '$' rompt l'analyseur d'expressions régulières msggrep.

J'ai essayé avec d'autres indicateurs msggrep (comme -F, -E ...) mais tous lisent des modèles de test à partir d'un fichier, ce qui est inacceptable pour mes besoins réels. J'utilise msggrep 0.14.6 (et je ne peux pas mettre à jour vers une bibliothèque plus récente).

Est-ce que quelqu'un sait comment obtenir la traduction de 'orand' en utilisant msggrep?

Répondre

1

Vous pouvez utiliser une fin de mot chèque à la place:

msggrep -K -e 'or\b' template2.pot 

Ce qui fait que il y a une limite de mot après 'or', il ne correspond pas à 'orand'.

+0

Merci pour votre réponse. C'est une solution "désagréable" (msgid comme '.or.' Serait apparié sur '\ bor \ b'), mais c'est mieux que rien :) –

Questions connexes