编写正则表达式以在 laravel 项目中查找翻译



我写了一个正则表达式模式:

(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')
您可以使用

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

请参阅正则表达式演示。

  • (trans(?:_choice)?|Lang::(?:get|choice|trans(?:Choice)?)|@(?:lang|choice)) - 第 1 组:
    • trans(?:_choice)? - trans后跟可选_choice
    • | - 或
    • Lang::(?:get|choice|trans(?:Choice)?) - Lang::后跟getchoicetranstransChoice
    • | - 或
    • @(?:lang|choice) - @后跟langchoice
  • ( - (
  • (['"]([^'"]+)['"]) - 第 2 组:'",然后是组 3 匹配除 '" 以外的任何 1+ 字符,然后是"'
  • [)]] - )]字符
  • ;? - 可选;

注意:使用一个正则表达式解析代码可能太脆弱。请考虑在更复杂的解决方案中使用此正则表达式或使用专用解析器(如果存在(。

最新更新