Использование регулярных выражений с msggrep - PullRequest
0 голосов
/ 25 августа 2009

У меня есть PO-файл с таким содержимым, как:

msgid "or"
msgstr "or-translation"

msgid "orand"
msgstr "orand-translation"

Мне нужно получить перевод данного сообщения. Используя команду "msggrep -K -e 'orand' template2.pot", я получаю перевод 'orand', и это нормально.

Но когда я использую "msggrep -K -e" или "template2.pot", if возвращает оба перевода ('или' и 'orand'). Команда "msggrep -K -e '^ или' template2.pot" работает должным образом, возвращая оба перевода, но "msggrep -K -e '^ или $' template2.pot" просто не выполняется, потому что ничего не возвращает. Похоже, символ '$' прерывает парсер регулярных выражений msggrep.

Я пробовал использовать другие флаги msggrep (например, -F, -E ...), но все они считывают шаблоны тестирования из файла, и это неприемлемо для моих реальных потребностей. Я использую msggrep 0.14.6 (и не могу перейти на более новую библиотеку).

Кто-нибудь знает, как я могу получить перевод для 'orand', используя msggrep?

1 Ответ

1 голос
/ 25 августа 2009

Вместо этого вы можете использовать проверку конца слова:

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

Что гарантирует наличие границы слова после 'or', поэтому оно не будет соответствовать 'orand'.

...