Java 使用regex在Servlet中测试字符串

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>"

无效的转义序列(有效的是\b\t\n\f\r\“\”\):

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));