【问题标题】:Writing a regex to find translations in a laravel project编写正则表达式以在 laravel 项目中查找翻译
【发布时间】:2019-11-04 09:22:17
【问题描述】:

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

(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))\(([\'"]([^\'"]+)[\'"])[)\]];?,见regex101.com/r/xuS5uh/1
  • 感谢 Wiktor,这正是我想要的,感谢您缩短它。您能否将其发布为答案?

标签: php regex laravel pcre


【解决方案1】:

你可以使用

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

请参阅regex demo

详情

  • (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+ 个字符,然后是 "'
  • [)\]] - )] 字符
  • ;? - 一个可选的;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多