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

Php 编写正则表达式以在laravel项目中查找翻译,php,regex,laravel,pcre,Php,Regex,Laravel,Pcre,我编写了一个正则表达式模式: (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-bu

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

(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(?:u choice)?Lang:(?:get | choice?trans(?:choice)?)@(?:Lang | choice))
    -第1组:
    • trans(?:\u choice)?
      -
      trans
      后接
      \u choice
    • |
      -或
    • Lang:(?:get | choice | trans(?:choice)?)
      -
      Lang:
      后跟
      get
      choice
      trans
      transChoice
    • |
      -或
    • @(?:lang | choice)
      -
      @
      后跟
      lang
      choice
  • \(
    -a
    字符
  • ([\'”]([^\'“]+)[\'”]
    -第2组:
    ,然后第3组匹配除
    之外的任何1+字符,然后是
  • [)\]
    -a
    ]
    字符
  • -可选的

注意:用一个正则表达式解析代码可能太脆弱。请考虑在一个更复杂的解决方案中使用这个正则表达式,或者使用一个专用的解析器(如果存在的话)。<检查> <代码>(Trn(?):郎?):(:?]?
,谢谢Wiktor,这正是我想要的,谢谢你缩短了它。你能把它作为一个答案贴出来吗?