Java正则表达式来查找方法名

Java正则表达式来查找方法名,java,regex,Java,Regex,我想用Java中的正则表达式查找方法和参数名称。我有一个C文件,我读了这个文件。我的正则表达式部分可以找到名称的方法,但另外,它可以找到其他名称,如printf、scanf。。。我只需要方法的名称 public class Deneme { public static void main(String[] args) throws FileNotFoundException, IOException { try{ File f=new File("C:\\Users

我想用Java中的正则表达式查找方法和参数名称。我有一个C文件,我读了这个文件。我的正则表达式部分可以找到名称的方法,但另外,它可以找到其他名称,如printf、scanf。。。我只需要方法的名称

public class Deneme {


public static void main(String[] args) throws FileNotFoundException, IOException {

    try{
        File f=new File("C:\\Users\\Emre\\Documents\\NetBeansProjects\\deneme\\src\\deneme\\Program.c"); //Open a file
        String s;
        FileReader reader=new FileReader(f); 
        BufferedReader br=new BufferedReader(reader); //Read file
        while((s=br.readLine())!=null){
            String regex="(?!\\bif\\b|\\bfor\\b|\\bwhile\\b|\\bswitch\\b|\\btry\\b|\\bcatch\\b)(\\b[\\w]+\\b)[\\s\\n\\r]*(?=\\(.*\\))";
            Pattern funcPattern = Pattern.compile(regex);
            Matcher m = funcPattern.matcher(s); //Matcher is used to match pattern with string 
            if(m.find()){
                System.out.println(m.group(0));
            }
        }
    }


    catch(Exception e){
            e.printStackTrace();
    }
}

}
这是我的C文件

#include "stdio.h" 
#include "stdlib.h" 

void DiziYazdir(int *p,int uzunluk)
{   
int i=0;  
for(;i<uzunluk;i++) 
printf("%d ",p[i]); 
} 

int DiziTopla(int *p,int uzunluk)
{ 
int i=0;  int toplam=0;  
for(;i<uzunluk;i++) 
toplam += p[i];  
return toplam; 
}

int main()
{ 
int x,y;  
printf("x:");  
scanf("%d",&x);  
printf("y:");  
scanf("%d",&y);  
int sonuc = x + y;  
printf("Sonuc:%d\n\n",sonuc);  
int *dizi = malloc(3*sizeof(int));  
dizi[0]=x;  
dizi[1]=y;  
dizi[2]=sonuc;  
DiziYazdir(dizi,3);  
printf("\n\nToplam Deger:%d",DiziTopla(dizi,3));  
free(dizi);  
return 0; 
}
#包括“stdio.h”
#包括“stdlib.h”
void DiziYazdir(int*p,int-uzunluk)
{   
int i=0;

对于(;i以下reg-ex应该可以正常工作,一个单词从一行开始,后跟空格,另一个单词(字母和数字),然后是一对副词中的任何字符序列,后跟可能的空格,然后是{

^\w*\s+[\w\d]+\(.*\)\s?\{?
作为一个java字符串,我想它应该是

String pattern = "^\\w*\\s+[\\w\\d]+\\(.*\\)\s?\\{?";

我试过了,但什么也没表现出来。谢谢你的帮助comment@EmreOzuslu我在一个文本编辑器中尝试了我的模式,这意味着它可以匹配过去的行尾,但这在这里是不可能的,因为您一次只读取一行,所以末尾括号的匹配需要是可选的。我更新了我的答案。