NSLocalizedString的正则表达式,带注释和不带注释的objectC

时间:2018-12-17 04:04:41

标签: regex python-2.7

我的文件中有以下两种不同的行模式。我希望正则表达式模式为每行中双引号的字符串创建组。

#define kvalue                        NSLocalizedString(@"value", comment:@"1223")

此处group(1)=“值”,group(2)=“ 1223”

#define kvalue                        NSLocalizedString(@"value", @"1223")

类似地,这里的group(1)=“ value”,group(2)=“ 1223”

我在正则表达式下进行了尝试,但没有得到预期的结果

stringwithComment = re.compile('NSLocalizedString\(@\s*"(.*?)"\s*,\s*comment:\s*\@"(.*?)"\s*\)',re.DOTALL )

2 个答案:

答案 0 :(得分:1)

我认为您的模式过于复杂。如果您只是想捕获这两个字符串,可以使用:

x = '#define kvalue                        NSLocalizedString(@"value", comment:@"1223")'
re.findall("@\"(\w+)\"", x)

输出

['value', '1223']

Demo

答案 1 :(得分:1)

就像我说的那样,您的正则表达式很好,但似乎您没有捕获包含要捕获的数据的group1和group2。这是示例代码,可以满足您的需求。

import re

s = '#define kvalue                        NSLocalizedString(@"value", comment:@"1223")'
stringwithComment = re.compile('NSLocalizedString\(@\s*"(.*?)"\s*,\s*comment:\s*\@"(.*?)"\s*\)',re.DOTALL )
m = re.search(stringwithComment,s)
if m:
 print(m.group(1))
 print(m.group(2))

此打印,

value
1223

希望这会有所帮助,如果您进一步遇到任何问题,请告诉我。