簡體   English   中英

正則表達式提取javascript方法調用

[英]Regular expression to extract javascript method calls

我已經創建了用於從javascript文件進行翻譯的字符串提取器。 我找到了用作起點的jsgettext項目( 請參閱參考資料)。

它使用reqular表達式在javascript文件中查找對__()方法的調用。 可以成功找到簡單的調用,但找不到帶有__('string', { a: 'b'})類的參數的調用。

我試圖修改正則表達式以使方法調用也與參數匹配,但沒有成功(我不是正則表達式專家)。

我的問題是: 如何修改以下正則表達式以匹配這樣的字符串?

// this is catched successfully 
// var string = __("Please enter %number% more characters.");

// this is problematic
var string = __("Please enter %number% more characters.", { '%number%' : 2 });

正則表達式:

 $keywords = join('|', array('__'));
 preg_match_all('# (?:' . $keywords . ') \(\\ *" ( (?: (?>[^"\\\\]++) | \\\\\\\\ | (?<!\\\\)\\\\(?!\\\\) | \\\\" )* ) (?<!\\\\)"\\ *\) #ix', $content, $matches, PREG_SET_ORDER);

謝謝

我認為您真的不需要匹配整個通話,例如:

__("Please enter %number% more characters.", { '%number%' : 2 });

您只需要匹配:

__("Please enter %number% more characters.",

其余部分保持原樣,因為這些只是參數,不應作為數據庫內部翻譯的一部分。

因此,在第8189行上編輯正則表達式以*(?:\\)|,) #ix代替*\\) #ix應該足夠好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM