Java 使用regex在Servlet中测试字符串
无效的转义序列(有效的是\b\t\n\f\r\“\”\):Java 使用regex在Servlet中测试字符串,java,regex,string,servlets,tdd,Java,Regex,String,Servlets,Tdd,无效的转义序列(有效的是\b\t\n\f\r\“\”\): private final String字符串doGetHtmlStringPartThree=“\d/\d” 要接受的双转义: private final String字符串doGetHtmlStringPartThree=“\\d/\\d” 测试 private final String doGetHtmlStringPartOne = "<html><body><table>"
private final String字符串doGetHtmlStringPartThree=“\d/\d”
要接受的双转义:
private final String字符串doGetHtmlStringPartThree=“\\d/\\d”
测试
private final String doGetHtmlStringPartOne = "<html><body><table>"
+ "<tr><td><h1>";
private final String doGetHtmlStringPartTwo = "</h1></td>"
+ "<form method=\"post\">"
+ "<input type=\"hidden\" name=\"randomDigitRange\" value=\"1\" />"
+ "<input type=\"hidden\" name=\"randomMathematicalOperator\""
+ " value=\"1\" /><input type=\"hidden\" name=\"fractionBoolean\""
+ " value=\"";
private final String doGetHtmlStringPartThree = "<td><input type=\"radio\" name=\"userInput\" value=\"\\d.+\">[0-9] / \\d</td>";
private final String doGetHtmlStringPartFour = "</tr><tr><td>"
+ "<input type=\"submit\" value=\"Submit\" "
+ "onclick='this.form.action=\"ToBeDefinedServlet\";' />"
+ "</td></tr></table></form></body></html>"
+ "<form action=\"/tobedefinedservlet\">"
+ "<input type=\"submit\" value=\"Home\"></form>";
@Test
public void testBooleanFractionTrue() throws IOException, ServletException {
mockDoGet();
assertEquals(expectedDoGetHtmlString("1 / 1 + 1 / 1", true),
stringWriter.getBuffer().toString().trim());
}
public String expectedDoGetHtmlString(String assignment,
Boolean fractionBoolean) {
return doGetHtmlStringPartOne + assignment + doGetHtmlStringPartTwo
+ "" + fractionBoolean + "" + "\" />" + "\n"
+ doGetHtmlStringPartThree + "\n" + doGetHtmlStringPartFour;
}
private final String doGetHtmlStringPartOne=“”
+ "";
私有最终字符串doGetHtmlStringPart2=“”
+ ""
+ ""
+“+”\n”
+DoGetHtmlStringPart三+“\n”+DoGetHtmlStringPart四;
}
正则表达式不起作用:
问题
如何使用正则表达式测试servlet中的字符串?可能重复的
+
将尽可能匹配任何内容。如果所有内容都匹配到字符串的末尾,如果不匹配,则一直到行尾。这是首先完成的,然后从结尾开始一次回溯1个字符,直到它匹配表达式的其余部分。示例包括在图片更新了我的答案。如果你告诉我你在问什么和你尝试了什么,会更容易。“如何使用正则表达式测试servlet中的字符串?”是一个非常模糊的问题,但可以通过快速的谷歌搜索来解决。你的问题似乎与正则表达式本身有关(我相信?)。此外,将示例放在代码括号中(而不是图像)使我们更容易提供帮助。我所能看到的只是您在图像中比较的一小部分内容。我再次更新了我的答案,以展示如何在Java中使用此正则表达式匹配(包括如何正确转义字符)。请告诉我这是否是您想要的答案,或者我是否可以提供更多帮助。如果使用assertTrue
,则提供的正则表达式计算结果为true,而assertEquals
计算结果为false。我将使用提供的正则表达式和assertTrue
而不是关闭assertEquals
。这回答了问题。谢谢我将投票并接受答案。
<td><input type="radio" name="userInput" value="(\d)+.(\d)+">(\d)+( ?\/? ?)(\d)+<\/td>
public static void main(String[] args) throws Exception {
String regex = "<td><input type=\"radio\" name=\"userInput\" value=\"(\\d)+.(\\d)+\">(\\d)+( ?\\/? ?)(\\d)+<\\/td>";
String test = "<td><input type=\"radio\" name=\"userInput\" value=\"1.1\">112/2</td>";
System.out.println("Does: " + test);
System.out.println("Match: the regex pattern: " + regex);
System.out.println("Answer: " + test.matches(regex));
}
Does: <td><input type="radio" name="userInput" value="1.1">112/2</td>
Match: the regex pattern: <td><input type="radio" name="userInput" value="(\d)+.(\d)+">(\d)+( ?\/? ?)(\d)+<\/td>
Answer: true
assertTrue(test.matches(regex));