Java正则表达式换行符与制表符或空格错误匹配
问题描述:
我有一个不想要的行为与Pattern.matches()
方法。Java正则表达式换行符与制表符或空格错误匹配
我想我的正则表达式不检测换行符。
下一个代码返回true,但我不知道为什么:
String text = "\n";
if(Pattern.matches("\\t|\\s",text)){
System.out.println("True");
}
else{
System.out.println("False");
}
我应该在正则表达式换回假?
答
按Pattern API,\s
代表a whitespace character: [ \t\n\x0B\f\r]
。因此,它将匹配任何这些。
您可以列出要匹配的每个单独字符,也可以使用|
(其中之一)和!
(非)等运算符。如果您要逐行阅读文本,则还可以使用^
(行首)和$
(行尾)伪字符。
这里有什么奇怪的东西? '\ s'匹配所有空格,包括换行符 – anubhava
\ s是空格 - > \ n是一个空格。 –
'\ s'包含'\ t',所以'\ t | \ s'与'\ s'相同。 – Bohemian