如果模式为空,则打印空值



我有这个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.groupmatcher没有找到值,我怎么能打印"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>");

最新更新