匹配无参数目标 c 方法

  • 本文关键字:方法 目标 参数 regex
  • 更新时间 :
  • 英文 :


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

这是正则表达式:

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

这与所有这些方法匹配:

-(void) heyzapCheckinTapped: (id)sender {

我期望它与这个 1 参数方法不匹配,只是一个无参数的方法。

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

提前谢谢。

这部分:

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

匹配此:

-(void) heyzapCheckinTapped: (id) 

这是因为在s*之后,您立即拥有(?<FuncName>(w+))(不确定为什么在命名捕获组中有一个捕获组),因此,.*?将匹配任何内容,直到有空格(0 或更多)后跟w个字符。

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

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

-s*((?<RetType>[^)]+))s*(?<FuncName>w+)s*{
[^)]+确保您在

匹配时仍位于第一个括号中。