我已经写了一个正则表达式来匹配objc中的无参数方法,但它也没有正常工作。它也将方法与一个参数匹配。
这是正则表达式:
\-\s*\((?<RetType>.*?)\)\s*(?<FuncName>(\w+))\s*{
这匹配所有这个方法:
-(void) heyzapCheckinTapped: (id)sender {
我原以为它不匹配这个1参数方法只是一个无参数的方法。
为什么在一个参数的情况下它匹配所有方法签名?它不应该在':'字符之前停止吗?
提前致谢。
答案 0 :(得分:2)
这部分:
\-\s*\((?<RetType>.*?)\)\s*
匹配这个:
-(void) heyzapCheckinTapped: (id)
这是因为\s*
(?<FuncName>(\w+))
之后.*?
(不确定为什么在命名的捕获组中有捕获组)等等,\w
将匹配任何内容,直到有空格(0或更多)后跟\-\s*\((?<RetType>[^)]+)\)\s*(?<FuncName>\w+)\s*{
个字符。
懒惰并不意味着它会在下一个模式的第一次出现时停止。如果可能匹配,它仍会尝试匹配。
您可以将正则表达式转换为:
[^)]+
{{1}}确保您在匹配时仍然在第一个括号中。