我想用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
最佳答案
以下代码可用于在多行注释表达式中提取 name
和 query
:
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/