匹配无参数的objective-c方法

时间:2013-10-03 11:52:14

标签: regex

我已经写了一个正则表达式来匹配objc中的无参数方法,但它也没有正常工作。它也将方法与一个参数匹配。

这是正则表达式:

\-\s*\((?<RetType>.*?)\)\s*(?<FuncName>(\w+))\s*{

这匹配所有这个方法:

-(void) heyzapCheckinTapped: (id)sender {

我原以为它不匹配这个1参数方法只是一个无参数的方法。

为什么在一个参数的情况下它匹配所有方法签名?它不应该在':'字符之前停止吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

这部分:

\-\s*\((?<RetType>.*?)\)\s*

匹配这个:

-(void) heyzapCheckinTapped: (id) 

这是因为\s* (?<FuncName>(\w+))之后.*?(不确定为什么在命名的捕获组中有捕获组)等等,\w将匹配任何内容,直到有空格(0或更多)后跟\-\s*\((?<RetType>[^)]+)\)\s*(?<FuncName>\w+)\s*{ 个字符。

懒惰并不意味着它会在下一个模式的第一次出现时停止。如果可能匹配,它仍会尝试匹配。

您可以将正则表达式转换为:

[^)]+

{{1}}确保您在匹配时仍然在第一个括号中。