Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要帮助用正则表达式提取翻译字符串_Javascript_Regex - Fatal编程技术网

Javascript 我需要帮助用正则表达式提取翻译字符串

Javascript 我需要帮助用正则表达式提取翻译字符串,javascript,regex,Javascript,Regex,我有很多翻译为字符串的javascript文件。我想把它们全部提取出来,然后生成一个翻译文件。我需要帮助来制作正则表达式模式 这里是我想摘录的一些例子 $t('Hello everybody') // extract => Hello everybody $t("I'm Paul") // extract => I'm Paul $t("I'm {name}", {name:username}) // extract => I'm {name} $t('Select {coun

我有很多翻译为字符串的javascript文件。我想把它们全部提取出来,然后生成一个翻译文件。我需要帮助来制作正则表达式模式

这里是我想摘录的一些例子

$t('Hello everybody') // extract => Hello everybody
$t("I'm Paul") // extract => I'm Paul
$t("I'm {name}", {name:username}) // extract => I'm {name}
$t('Select {count}', {count: count}) + $t(' element | elements', count) + $t(' on this page') 
对于4h示例,要提取的字符串:
选择{count}
元素|元素
在这一页上

这些字符串在javascript文件中。 你能帮我建立正则表达式模式吗


感谢您的帮助。

根据您的示例,使用以下正则表达式:

\$t\((['"])(.*?)\1
提取的数据将驻留在捕获组2中。如果字符串文本包含转义分隔符,则模式将失败。请注意非贪婪子模式
*?
,这对于示例4非常重要

如果需要考虑转义分隔符,则会使模式复杂化:

\$t\((['"])(.*?)(?<!\\)\1
但是,通过适当的字符类来表示无分隔符的子字符串,也可以取消负前瞻:

\$t\((['"])((.*?)(\\\1([^\\]*?))*)\1

这是javascript代码。我的意思是你要用什么工具来处理这些regexp?我使用javascript。你可以试试这个
^\$t\(['''].[']])
@CodeManiac我对网站进行了测试,但您的模式仅适用于第三个示例。下面将处理转义分隔符,但您必须检查提取的内容是在第一组(单引号分隔)还是在第二组(双引号分隔)中:
\$t\((['"])((.*?)(\\\1([^\\]*?))*)\1