我写了一个正则表达式模式:
(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))\(([\'"]([^\'"]+)[\'"])[)\]];?
参见 regex demo .
详情
(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
\(
- 一个(
字符([\'"]([^\'"]+)[\'"])
- 第 2 组:'
或"
,然后第 3 组匹配除'
和"
之外的任何 1+ 个字符,然后是"
或'
[)\]]
-)
或]
字符;?
- 可选的;
。
注意:使用一个正则表达式解析代码可能过于脆弱。请考虑在更复杂的解决方案中使用此正则表达式或使用专用解析器(如果存在)。
关于php - 编写正则表达式以在 laravel 项目中查找翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704888/