2017-02-16 231 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]*")); 
相关问题