簡體   English   中英

正則表達式匹配Java中的轉義序列

[英]Regular expression to match escaped sequences in java

我正在尋找正則表達式來檢查Java中的所有轉義序列

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

如何編寫正則表達式並執行驗證,以允許單詞/文本區域/字符串/句子包含有效的轉義序列

此正則表達式將匹配您編寫的所有轉義序列:

\\[btnfr"'\\]

在Java中,您需要復制反斜杠,其代碼結果如下:

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

您需要使用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));

以下正則表達式應滿足您的需求:

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'\\"]"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM