-1

有用于查找空白字符串的正则表达式,我只想要否定。我也看到了这个问题,但它不适用于 java(参见示例)。解决方案对我也不起作用(参见示例中的第 3 行)。

例如

Pattern.compile("/^$|\\s+/").matcher(" ").matches() - false
Pattern.compile("/^$|\\s+/").matcher(" a").matches()- false
Pattern.compile("^(?=\\s*\\S).*$").matcher("\t\n a").matches() - false

在这两种情况下都返回 false。

PS如果有不清楚的地方问我问题。

更新

我想在@Pattern注释中使用这个正则表达式,而不为它创建自定义注释和编程验证器。这就是为什么我想要一个不使用find函数的“普通”正则表达式解决方案。

4

3 回答 3

5

不清楚你所说的否定是什么意思。

如果你的意思是“一个至少包含一个非空白字符的字符串”,那么你可以使用这个:

Pattern.compile("\\S").matcher(str).find()

如果真的有必要使用matches,那么你可以这样做。

Pattern.compile("\\A\\s*\\S.*\\Z").matcher(str).matches()

这仅匹配 0 个或多个空格,后跟一个非空格,后跟任何字符,直到字符串的末尾。

如果你的意思是“一个至少有一个这样的字符的非空白字符串”,那么你可以使用这个:

Pattern.compile("\\A\\S+\\Z").matcher(str).matches()

您需要学习Java 正则表达式语法。在 Java 中,正则表达式是从字符串编译的,因此不需要特殊的分隔符/.../,就像%r{...}您在其他语言中看到的那样。

于 2013-08-21T12:07:15.883 回答
1

这个怎么样:

if(!string.trim().isEmpty()) {
    // do something
}
于 2013-08-21T12:20:49.590 回答
0

使用regex \s:空白字符: \t\n\x0B\f\r.

Pattern.compile("\\s")
于 2013-08-21T12:13:43.797 回答