gpt4 book ai didi

Java RegEx 查找方法名称

转载 作者:行者123 更新时间:2023-12-02 10:12:24 24 4
gpt4 key购买 nike

我想在 Java 中使用 RegEx 查找方法和参数名称。我有一个 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;
}

有很多方法,我无法将所有方法都写在“String regex”中,例如“\bfor\b|\bwhile\b”。有没有正则表达式方法可以解决这个问题?或者是否有一个涵盖整体的正则表达式方法?它只会打印方法和参数的名称,例如 DiziYazdir、DiziTopla、Main 以及方法 *p、int uzunluk。

最佳答案

以下正则表达式应该可以正常工作,一个单词开始行,后跟空格和另一个单词(字母和数字),然后是一对括号内的任何字符序列,后跟可能是空格,然后是 {

^\w*\s+[\w\d]+\(.*\)\s?\{?

作为一个java字符串我想它应该是

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

关于Java RegEx 查找方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54905493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com