Я хочу найти имена методов и параметров с помощью RegEx в Java.У меня есть файл C, и я читаю этот файл.Моя часть Regex может найти метод имен, но дополнительно, она находит другие имена, такие как 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;
}
Существует множество методов, и я не могу написать все методы в "Строковом регулярном выражении", например "\ bfor \ b | \ b while \ b".Есть ли какой-нибудь метод RegEx, чтобы это исправить?или есть метод RegEx, который охватывает все?Он будет просто печатать имена методов и параметров, таких как DiziYazdir, DiziTopla, Main и для методов * p, int uzunluk.