2017-02-16 225 views
2

我有任何順序包含這些特殊字符的輸入字符串:*.\nJava正則表達式匹配特定的特殊字符

我想確保有字符串中沒有其他字符和\n應始終一起而不是像*.*..\..n,所以我想用正則表達式完全匹配Java中的字符串。

我嘗試使用正則表達式來確定是否輸入的字符串的模式匹配,如以下:

String input = "*.*.*.\n.."; 
    System.out.println(input.matches("[\\\\.*\\n]")); 

然而,輸出是假的。

我嘗試使用雙轉義字符,以便處理與Java的使用轉義字符,但並不如預期的結果。

+1

對不起,你的意思是你的輸入應該只包含文字'*','。 '和* newline *符號?或'''','''''''''和'n'?如果你有換行符,那麼你需要像'input.matches(「[。* \ n] *」)'或'input.matches(「[。* \ n] +」)'(如果至少有1個符號是在輸入中需要)。 –

+0

@Wiktor完美,爲我工作,謝謝!是的,我的意思是* newline *符號。 'input.matches(「[。* \ n] *」)'是我想要的,因爲我不需要至少1個符號。爲了完整性,在Java中,它將是'input.matches(「[。* \\ n] *」)'。 – ccoder83

+1

在Java中,編寫'input.matches(「[。* \ n] *」)'就足夠了。無論如何,它已被張貼 –

回答

1

你只需要添加*量詞來匹配多個字符。此外,沒有必要逃避字面點:

String input = "*.*.*.\n.."; 
System.out.println(input.matches("[.*\\n]*")); 

[.*\\n]相匹配的.,或*或面值換行符\n

+1

@KirillBulygin'\\ n'匹配文字'\ n',正是OP想要的。 – manouti

+1

我最好把它描述爲*'「\\ n」'與文字換行符*匹配。 –

0

\ S我們必須使用一個空白字符:[\ t \ n \ X0B \˚F\ R]

String stringToSearch = "...\n..\n..\n.*.*.*.*...*.*"; 
System.out.println(stringToSearch.matches("[.*\\s]*"));