Java中的非空白匹配
我想检测包含非空白字符的字符串。现在我正在尝试:Java中的非空白匹配,java,regex,string,whitespace,Java,Regex,String,Whitespace,我想检测包含非空白字符的字符串。现在我正在尝试: !Pattern.matches("\\*\\S\\*", city) 但它似乎不起作用。有人有什么建议吗?我知道我可以修剪字符串并测试它是否等于空字符串,但我更愿意这样做\S(大写S)匹配非空白,因此您不必否定匹配的结果 另外,尝试Matcher的方法find而不是Pattern.matches您认为正则表达式到底匹配什么 试一试 find方法将搜索部分匹配,而不是完全匹配。这似乎是您所需要的行为。的类非常适合这种情况: boolean ha
!Pattern.matches("\\*\\S\\*", city)
但它似乎不起作用。有人有什么建议吗?我知道我可以修剪字符串并测试它是否等于空字符串,但我更愿意这样做\S
(大写S)匹配非空白,因此您不必否定匹配的结果
另外,尝试Matcher的方法
find
而不是Pattern.matches
您认为正则表达式到底匹配什么
试一试
find
方法将搜索部分匹配,而不是完全匹配。这似乎是您所需要的行为。的类非常适合这种情况:
boolean hasNonWhitespace = !CharMatcher.WHITESPACE.matchesAllOf(someString);
这将根据Unicode标准匹配空格,而不是使用Java的Character.isWhitespace()
方法city.matches(".*\\S.*")
或
您也可以使用regex执行另一种方法:
!aString.matches(“\\s*”)
但是,正如您已经提到的,trim()
然后检查长度(或者isEmpty()
)是更符合逻辑的解决方案,我希望它能匹配“任何内容,后跟一个非空白字符,后跟任何内容。”
city.matches(".*\\S.*")
Pattern nonWhitespace = Pattern.compile(".*\\S.*")
nonWhitspace.matches(city)