gpt4 book ai didi

java - 正则表达式在 Java 类的单行/多行中查找注释

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

我想用Java开发一个正则表达式来查找Java类的单行/多行注释。我现在正在尝试这个

String regExp = "^\\s*(@.+)$";

但它仅适用于单行,不适用于多行。

@NamedNativeQuery(name = "nativeSQL", query = "SELECT emp1.emp_id, emp1.name, emp1.manager_id, "
+ "emp1.dept_id, emp1.address_id " + "FROM EMP emp1, EMP emp2 "
+ "WHERE ((emp2.EMP_ID = ?) AND (emp2.EMP_ID = emp1.MANAGER_ID))", resultClass = Professor.class)

在给定的示例中,我想提取键值对,例如

name = "nativeSQL"
query = "SELECT emp1.emp_id, emp1.name, emp1.manager_id, "
+ "emp1.dept_id, emp1.addr

最佳答案

以下代码可用于在多行注释表达式中提取 namequery:

String line = "@NamedNativeQuery(name = \"nativeSQL\", query = \"SELECT emp1.emp_id, emp1.name, emp1.manager_id, \"\n" + 
"+ \"emp1.dept_id, emp1.address_id \" + \"FROM EMP emp1, EMP emp2 \"\n" +
"+ \"WHERE ((emp2.EMP_ID = ?) AND (emp2.EMP_ID = emp1.MANAGER_ID))\", resultClass = Professor.class)\n";
Pattern pt = Pattern.compile("^\\s*@NamedNativeQuery\\(\\s*name\\s*=\\s*\"(.+)\"\\s*,\\s*query\\s*=\\s*\"(.+)\"\\s*,", Pattern.DOTALL);
Matcher m = pt.matcher(line);
if (m.find())
System.out.println("name: [" + m.group(1) + "] query: [" + m.group(2) + ']');

输出:

name: [nativeSQL] query: [SELECT emp1.emp_id, emp1.name, emp1.manager_id, "
+ "emp1.dept_id, emp1.address_id " + "FROM EMP emp1, EMP emp2 "
+ "WHERE ((emp2.EMP_ID = ?) AND (emp2.EMP_ID = emp1.MANAGER_ID))]

关于java - 正则表达式在 Java 类的单行/多行中查找注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8652846/

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