Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Objective c 使用正则表达式解析源中的所有NS*变量_Objective C_Regex_Parsing - Fatal编程技术网

Objective c 使用正则表达式解析源中的所有NS*变量

Objective c 使用正则表达式解析源中的所有NS*变量,objective-c,regex,parsing,Objective C,Regex,Parsing,我试图提取objective-c.m文件中所有变量的名称。我认为正则表达式可能是一个很好的方法。假设我在我的资料中有这样的东西: - (void)testMethod:(NSString*)param1Name param2:(NSString*)param2Name{ NSxxxxx *xxxx = @"something"; NSString *test2 = @"test"; NSArray *array; } 理想情况下,我想要的输出是这样的: xxxx 测试2

我试图提取objective-c.m文件中所有变量的名称。我认为正则表达式可能是一个很好的方法。假设我在我的资料中有这样的东西:

- (void)testMethod:(NSString*)param1Name param2:(NSString*)param2Name{
    NSxxxxx *xxxx = @"something";
    NSString *test2 = @"test";
    NSArray *array;
}
理想情况下,我想要的输出是这样的: xxxx 测试2 排列

这在正则表达式中可行吗?我认为一个正则表达式可能足以提取以NS开头的单词的所有行,而下一个单词以*开头

编辑:到目前为止,我有:

(NS)\w+\s*?
问题在于,它匹配的是变量的类型,而不是变量名称:

NSXXXXX
NSString
NSArray

如何使其与星号后的单词匹配?

由于您希望匹配NS*变量的特定出现次数(行首的变量),您可以使用

(?m)^[ \t]*NS\w+\s*\*\s*(\w+)

您需要的值将位于组1内

详情:

  • (?m)
    -启用多行选项以允许
    ^
    匹配行的开头,而不是字符串
  • ^
    -行的开头
  • [\t]*
    -零个或多个空格/制表符
  • NS
    -文本
    NS
  • \w+
    -1+字字符(字母、数字或下划线)
  • \s*
    -0+空格
  • \*
    -星号
  • \s*
    -零个或多个空格
  • (\w+)
    -第1组-1+字字符

听起来是可行的。你已经开始了吗?还在想。到目前为止,我在想(NS)\w+\s*?这是正确的方法吗?虽然这将匹配变量的类型,而不是后面的实际单词是的,它看起来比没有好,请用您的尝试更新帖子并描述失败的地方。这是一个perl兼容的正则表达式吗?我想要么用grep,要么用objective-c。我喜欢解释每个组件含义的细节。谢谢。Objective-C使用ICU正则表达式库,这个正则表达式将在Objective-C中工作。只是别忘了在Objective-C字符串文本中使用双反斜杠。酷,我想我已经让它工作了!再次感谢Wiktor的解释!