【发布时间】:2016-08-23 19:04:02
【问题描述】:
我正在尝试提取localization 的字符串。有很多文件,其中一些字符串被标记为NSLocalizedStrings,而其中一些没有。
我可以使用ibtool 和genstrings 获取NSLocalizedStrings,但如果没有NSLocalizedString,我无法提取纯字符串。
我不擅长正则表达式,但我想出了这个"[^(]@\""
并在 grep 的帮助下:
grep -i -r -I "[^(]@\"" * > out.txt
它成功了,所有的字符串实际上都被抓取到一个txt文件中,但问题是,
如果在我的代码中有一行:
..... initWithTitle:@"New Sketch".....
我只希望 grep 抓取 @"New Sketch" 部分,但它抓取整行。
所以在out.txt 文件中,我看到了initWithTitle:@"New Sketch",以及一些不需要的行。
如何编写正则表达式以仅获取双引号中的字符串?
我用here 中提到的正则表达式尝试了 grep 命令,但它给了我语法错误。
例如,我试过了:
grep -i -r -I (["'])(?:(?=(\\?))\2.)*?\1 * > out.txt
它给了我
-bash: syntax error near unexpected token `('
【问题讨论】:
-
我认为这是在谈论第一个括号。
grep -i -r -I (我认为它需要一个带引号的字符串。 -
为什么不能在xcode中使用导出/导入工具?
-
我一直想用它,但是我们公司的翻译人员不希望我们用它。所以很难!@EugeneZhenyaGordin
-
如果您打算本地化您的应用程序,您需要对代码中需要本地化的每个字符串使用
NSLocalizedString。一次更新您的代码库并正确执行。随着时间的推移,它将为您节省大量的精力。 -
我同意@rmaddy,如果找不到更简单的方法,我会这样做。
标签: objective-c regex terminal grep