匹配除特定字符之外的所有字符的正确语法是什么。
例如,我想匹配除[A-Z] [a-z]
和数字[0-9]
之外的所有内容。
我有
string.matches("[^[A-Z][a-z][0-9]]")
这是不正确的?
答案 0 :(得分:20)
是的,您不需要那样的嵌套[]
。请改用:
"[^A-Za-z0-9]"
这是一个角色类。
答案 1 :(得分:6)
如果您想匹配除字母之外的任何内容,您应该查看Unicode properties。
\p{L}
是来自任何语言的任何类型的信件
使用大写的“P”代替它是否定,因此\P{L}
将匹配任何不是字母的内容。
\d
或\p{Nd}
是匹配的数字
因此,您在现代Unicode样式中的表达式将如下所示
使用否定的字符类
[^\p{L}\p{Nd}]
或否定属性
[\P{L}\P{Nd}]
接下来的事情是,matches()
匹配完整字符串的表达式,因此表达式只有字符串中只有一个字符才是真的。所以你需要添加一个量词:
string.matches("[^\p{L}\p{Nd}]+")
当完整的字符串只包含非字母数字和至少其中一个字符串时,返回true。
答案 2 :(得分:1)
string.matches("[^A-Za-z0-9]")
答案 3 :(得分:1)
答案 4 :(得分:0)
假设您要确保没有字符串中包含_符号,那么您只需使用类似的内容。
Pattern pattern = Pattern.compile("_");
Matcher matcher = Pattern.matcher(stringName);
if(!matcher.find()){
System.out.println("Valid String");
}else{
System.out.println("Invalid String");
}
答案 5 :(得分:0)
If {{ job_metadata }} is rendered in a job, it will include the following additional fields: ... extra_vars ...