gpt4 book ai didi

java - 获取正确的正则表达式——Java

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:29 25 4
gpt4 key购买 nike

我正在尝试解析 cflow 的输出,然后将用于构建控制流的 3D 图。 cflow 的输出看起来像这样:

main() <int main (int argc, char *argv[]) at sort.c:3>:
strcmp()
printf()
malloc()
getline() <char *getline (int max) at sort.c:62>:
isspace()
getchar()
ungetc()
malloc()
qsort()
free()

我使用正则表达式来提取函数名称和括号 - 我想要获取 main()strcmp() 等。我的代码如下:

String line = input.nextLine(); // input is a Scanner reading from a file
Pattern p = Pattern.compile("[a-zA-Z0-9_]+\\(\\)"); // the important part
Matcher m = p.matcher(line);

现在,我使用的模式可以使用 Emacs 的 regexp-builder 模式来工作。然而,当我运行这个程序时,我没有得到任何匹配项。我可能只是不理解 Java 的正则表达式函数。

此外,我意识到明显的解决方案是不使用 Java...我更喜欢这样做,但我将使用处理来绘制图表,所以我实际上别无选择。

最佳答案

如果您尝试提取字符串的一部分,则必须使用括号在正则表达式中形成组。如果您将正则表达式重写为类似 .*([a-zA-Z0-9_]+\\(\\)).* 的内容,则文字括号中的组实际上会存储为匹配项。然后,您可以调用 m.group(1) 来检索第一个括号组提取的字符串,即 [a-zA-Z0-9_]+\\(\\)

关于java - 获取正确的正则表达式——Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321213/

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