有正则表达式来查找空字符串,我只想要否定.我也看到了这个问题,但它不适用于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
Run Code Online (Sandbox Code Playgroud)
在两种情况下都返回false.
PS如果有什么不明确的问我问题.
更新
我想在@Pattern注释中使用这个正则表达式而不为它创建自定义注释和编程验证器.这就是为什么我想要一个没有使用find功能的"普通"正则表达式解决方案.
否定你的意思并不清楚.
如果您的意思是"包含至少一个非空白字符的字符串",那么您可以使用:
Pattern.compile("\\S").matcher(str).find()
Run Code Online (Sandbox Code Playgroud)
如果真的有必要使用matches,那么你可以用它来做.
Pattern.compile("\\A\\s*\\S.*\\Z").matcher(str).matches()
Run Code Online (Sandbox Code Playgroud)
这只是匹配0或更多空格,后跟非空格,后跟任何字符,直到字符串结尾.
如果你的意思是"一个非空白的字符串,至少有一个这样的字符",那么你可以使用这个:
Pattern.compile("\\A\\S+\\Z").matcher(str).matches()
Run Code Online (Sandbox Code Playgroud)
您需要学习Java正则表达式语法.在Java中,正则表达式从字符串编译,所以没有必要进行特殊的分隔符像/.../或者%r{...}因为你会在其他语言中看到.
| 归档时间: |
|
| 查看次数: |
6827 次 |
| 最近记录: |