#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "[^\w](?<!->)(trans|trans_choice|Lang::get|Lang::choice|Lang::trans|Lang::transChoice|@lang|@choice|__)\s*\(\s*((?<![\\])['"])((?:.(?!(?<![\\])\2))*.?)\2\s*[,\)]"
Local $sString = "Should match variations on method:" & @CRLF & _
"trans('a.b');" & @CRLF & _
"trans_choice('a.b')" & @CRLF & _
"Lang::get('a.b');" & @CRLF & _
"Lang::choice('a.b', 1);" & @CRLF & _
"Lang::trans('a.b');" & @CRLF & _
"Lang::transChoice('a.b', 2);" & @CRLF & _
"@lang('language.line')" & @CRLF & _
"@choice('language.line', 1);" & @CRLF & _
"__('a.b')" & @CRLF & _
"" & @CRLF & _
"Should match variations of contained string" & @CRLF & _
"trans('key'); // No group, so JSON style" & @CRLF & _
"__('Json string')" & @CRLF & _
"trans('a.b');" & @CRLF & _
"trans('a.b.c');" & @CRLF & _
"trans('a_b.c-d');" & @CRLF & _
"trans('a.b!');" & @CRLF & _
"trans('a.translate me!');" & @CRLF & _
"trans('a.über~');" & @CRLF & _
"trans("app.i'm"); // contained quote of different type" & @CRLF & _
"trans('app."ok"');" & @CRLF & _
"trans('with contained " quotes');" & @CRLF & _
"trans('with an escaped \' quote')" & @CRLF & _
"trans('with a double \\')" & @CRLF & _
"" & @CRLF & _
"Should match additional variables and whitespace" & @CRLF & _
"trans('a.b', [1,2]);" & @CRLF & _
"trans ( " & @CRLF & _
" ' with whitespace ' , $var)" & @CRLF & _
"" & @CRLF & _
"Typical use cases" & @CRLF & _
"(trans ( 'lang.line'));" & @CRLF & _
"<span>@lang('lang.line')</span>" & @CRLF & _
"" & @CRLF & _
"Should not match:" & @CRLF & _
"trans($var); // No quotes" & @CRLF & _
"trans(); // Nothing" & @CRLF & _
"anytrans('group.key'); // not the method we need" & @CRLF & _
"1trans('lang.file'); // not the method" & @CRLF & _
"_trans('lang.file'); // not the method" & @CRLF & _
"->trans('lang.line');" & @CRLF & _
"trans(\'why do we have an escaped quote here?\')" & @CRLF & _
"trans('with a triple \\\') <-- fail!" & @CRLF & _
"trans('lang.line' . $middle); // concatenated vars" & @CRLF & _
"trans('lang.line' . $middle . '.ending'); // concatenated vars" & @CRLF & _
"___('hello') // not the method we need" & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm