finding blank string有正则表达式,我只想要否定。我也看到this question但它不适用于java(参见示例)。 Solution也不适合我(参见示例中的第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。
P.S。如果不清楚,请向我提问。
已更新
我想在@Pattern注释中使用此正则表达式,而不为其创建自定义注释和编程验证器。这就是为什么我需要一个“普通”的正则表达式解决方案而不使用find函数。
答案 0 :(得分: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 regex syntax。在Java中,正则表达式是从字符串编译的,因此不需要像/.../
或%r{...}
这样的特殊分隔符,就像在其他语言中看到的那样。
答案 1 :(得分:1)
这个怎么样:
if(!string.trim().isEmpty()) {
// do something
}
答案 2 :(得分:0)
使用regex
\s
:空格字符:\t\n\x0B\f\r
。
Pattern.compile("\\s")