Написание регулярного выражения для поиска переводов в проекте Laravel - PullRequest
3 голосов
/ 21 июня 2019

Я написал шаблон регулярного выражения:

(trans|trans_choice|Lang::get|Lang::choice|Lang::trans|Lang::transChoice|@lang|@choice)\(([\'"]([a-zA-Z0-9_-]+([.][^)\'"]+?)+)[\'"])(\s?,\s?.*)*?[\)\]];?

Для нацеливания строк перевода Laravel, таких как:

trans('email.subject)
@lang('email.confirm-email-address-button')

Но я не могу понять, как нацеливать строки перевода с косой чертой, например:

@lang('emails/order-received.edit-order-button')

1 Ответ

2 голосов
/ 21 июня 2019

Вы можете использовать

(trans(?:_choice)?|Lang::(?:get|choice|trans(?:Choice)?)|@(?:lang|choice))\(([\'"]([^\'"]+)[\'"])[)\]];?

См. Демоверсию regex .

Детали

  • (trans(?:_choice)?|Lang::(?:get|choice|trans(?:Choice)?)|@(?:lang|choice)) - Группа 1:
    • trans(?:_choice)? - trans, необязательно, с _choice
    • | - или
    • Lang::(?:get|choice|trans(?:Choice)?) - Lang:: и get, choice, trans или transChoice
    • | - или
    • @(?:lang|choice) - @ и lang или choice
  • \( - ( char
  • ([\'"]([^\'"]+)[\'"]) - группа 2: ' или ", затем группа 3, соответствующая любым 1+ символам, кроме ' и ", а затем " или '
  • [)\]] - ) или ] char
  • ;? - опционально ;.

ПРИМЕЧАНИЕ : Анализ кода с одним регулярным выражением может быть слишком хрупким. Пожалуйста, рассмотрите возможность использования этого регулярного выражения в более сложном решении или использования выделенного анализатора, если таковой существует.

...