正则表达式匹配java中的转义序列

时间:2016-10-27 09:48:49

标签: java regex string

我正在寻找正则表达式来检查java中的所有转义序列

\b  backspace
\t  horizontal tab
\n  linefeed
\f  form feed
\r  carriage return
\"  double quote
\'  single quote
\\  backslash

如何编写正则表达式并执行验证以允许包含有效转义序列的单词/ textarea / strings / sentence

3 个答案:

答案 0 :(得分:1)

此正则表达式将匹配您编写的所有转义序列:

\\[btnfr"'\\]

在Java中,您需要复制反斜杠,代码将显示为:

Pattern p = Pattern.compile("\\\\[btnfr\\\"\\'\\\\]");
if(p.matcher("\\b  backspace").find()){
    System.out.println("Contains escape sequence");
}

答案 1 :(得分:0)

您需要使用DOTALL来匹配行终止符。您可能还会发现\s方便,因为它代表所有空格。例如

Pattern p = Pattern.compile("([\\s\"'\\]+)", Pattern.DOTALL);
Matcher m = p.matcher("foo '\r\n\t bar");
assertTrue(m.find());
assertEquals(" '\r\n\t ", m.group(1));

答案 2 :(得分:0)

以下正则表达式应满足您的需求:

Pattern pattern = Pattern.compile("\\\\[\\\\btnfr\'\"]");

,如

    Pattern pattern = Pattern.compile("\\\\[\\\\btnfr\'\"]");
    String[] strings = new String[]{"\\b","\\t","\\n","\\f","\\r","\\\'","\\\"", "\\\\"};
    for (String s:strings) {
        System.out.println(s + " - " + pattern.matcher(s).matches());
    }

要匹配单个\,您必须在正则表达式字符串中添加4 \

考虑到字符串,"\\"代表单个\

当你有"\\"作为正则表达式字符串时,它表示\是正则表达式中的特殊字符,并且应该跟随某个其他字符以形成转义序列。

通过这种方式,我们需要"\\\\"来匹配单个\,它等同于字符串"\\"

编辑:没有必要转义正则表达式字符串中的单引号。因此,"\\\\[\\\\btnfr\'\"]"可以替换为"\\\\[\\\\btnfr'\"]"