我有这个Java模式匹配代码:
out.println("<tr>");
out.println("<td>" + file_path+ "</td>");
out.println("<td> .sql </td>");
Pattern pattern = Pattern.compile("(?<key>([\w]+)?): (?<value>(.+)?)");
Matcher matcher = pattern.matcher(text);
while (matcher.find())
{
if (matcher.group("key").equals("author")) {
out.println("<td>" + matcher.group("value") + "</td>");
} else {
out.println("<td> N/A </td>");
}
}
out.println("<td> date </td>");
你知道如果matcher.group
或matcher
没有找到值,我怎么能打印"N/A"吗?当前,表格单元格已剪切。
看起来微不足道; 设置一个布尔值:
out.println("<tr>");
out.println("<td>" + file_path+ "</td>");
out.println("<td> .sql </td>");
Pattern pattern = Pattern.compile("(?<key>([\w]+)?): (?<value>(.+)?)");
Matcher matcher = pattern.matcher(text);
boolean noMatches = true;
while (matcher.find()) {
noMatches = false;
if (matcher.group("key").equals("author")) {
out.println("<td>" + matcher.group("value") + "</td>");
} else {
out.println("<td> N/A </td>");
}
}
if (noMatches) {
out.println("<td> N/A </td>");
}
out.println("<td> date </td>");
然后你可以清理很多:
out.println("<tr>");
out.println("<td>" + file_path+ "</td>");
out.println("<td> .sql </td>");
Pattern pattern = Pattern.compile("author: (.*)");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
out.println("<td>" + matcher.group(1) + "</td>");
} else {
out.println("<td> N/A </td>");
}
out.println("<td> date </td>");