我写了一个正则表达式模式:
(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::
后跟get
、choice
、trans
或transChoice
-
|
- 或 -
@(?:lang|choice)
-@
后跟lang
或choice
-
-
(
-(
炭 -
(['"]([^'"]+)['"])
- 第 2 组:'
或"
,然后是组 3 匹配除'
和"
以外的任何 1+ 字符,然后是"
或'
-
[)]]
-)
或]
字符 -
;?
- 可选;
。
注意:使用一个正则表达式解析代码可能太脆弱。请考虑在更复杂的解决方案中使用此正则表达式或使用专用解析器(如果存在(。