Javascript 在Swift中解析文件字符串之间的所有字符串

Javascript 在Swift中解析文件字符串之间的所有字符串,javascript,regex,macos,swift,nsscanner,Javascript,Regex,Macos,Swift,Nsscanner,我想为我的javascript(pebble.js)应用程序构建一个本地化应用程序。它应该找到l.(“和”或”)或“,或”,之间的所有字符串 例如,我有这条线 console.log(l.(“这是一个测试”)+l.('%@times%@等于%@',2,4,(2*4)); 使用Swift应用程序,我应该得到如下数组: ["This is a Test", "%@ times %@ equals %@"] 现在我不知道应该如何管理它。我应该使用Regex、NSScanner还是拆分字符串 谢谢!我

我想为我的javascript(pebble.js)应用程序构建一个本地化应用程序。它应该找到
l.(“
”)
“,
”,
之间的所有字符串

例如,我有这条线

console.log(l.(“这是一个测试”)+l.('%@times%@等于%@',2,4,(2*4));

使用Swift应用程序,我应该得到如下数组:

["This is a Test", "%@ times %@ equals %@"]
现在我不知道应该如何管理它。我应该使用Regex、NSScanner还是拆分字符串


谢谢!

我不熟悉NSScanner,但使用regexp,解决方案将非常简单,假设字符串的两端都有相同的分隔符。(即,您没有类似于
l.(“Hello world”)
)我认为这在JavaScript中不是有效的语法,所以让我们假设是这样。 另外,我们假设字符串不包含任何转义引号(与用作分隔符的类型相同),也就是说,不存在这样的字符串:
l.。((“Hello\”world)

现在,您可以使用以下两个regexp来查找由双引号分隔的字符串和由单引号分隔的字符串:

l.\((((?:[^”])*)”
——双引号
l.\('((?:[^'])*)
——用于单引号

然后,您必须在输入上运行这两个regexp,并获得每个匹配的第一个捕获组的结果。(我不确定swift到底是如何使用regexp的,但请注意,在许多实现中,捕获组#0通常是全部匹配项,而捕获组#1位于第一对括号之间——您需要后者。)

另外,请注意,您不必关心结束引号后面的内容:无论是括号还是逗号,对您来说都是一样的,因为您只需查找引号

编辑:更正了regexp(重复应该在捕获组内)

EDIT2:如果我们允许转义引号,那么您可以将此regexp用于单引号的情况:
l.。\(((?:\\'.[^'])*)
。对于双引号,还有一个类似的例子。 您可以通过以下链接使用正则表达式: