在我的Java 8应用程序中,我正在扫描传入的文本中的空格。但是我的正则表达式中的
为解决这个问题,我在我的正则表达式中添加了
\s
不能捕获所有的空格。在我的测试中,我发现它无法捕获其中的一个空格,即不间断空格(Unicode 00A0)。这是我的正则表达式,遇到了这个问题:Pattern p = Pattern.compile("\\s");
为解决这个问题,我在我的正则表达式中添加了
\h
。Pattern p = Pattern.compile("[\\s\\h]");
现在,我还需要注意哪些不会被\s\h
捕获的其他空格?
"\\p{Z}"
。Z
是 Unicode 通用类别;请参阅 http://unicode.org/reports/tr44/#General_Category_Values。 - VGR\\p{Z}
不匹配\t
或\n
。 - Holger\r
和\u000b
也没有被包括在内。它们都被归类为控制字符。所以,我想我会使用"[\\s\\p{Z}]"
。我认为这覆盖了所有情况... - VGR\p{IsWhiteSpace}
或(?U)\s
,因为\u000b
、\r
、\n
和\t
属于“控制”类别,但具有二进制属性“空格”。 - Holger