Javascript 我需要帮助用正则表达式提取翻译字符串
我有很多翻译为字符串的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
$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