Java 正则表达式匹配除之外的所有字符
匹配除特定字符之外的所有字符的正确语法是什么?
例如,我想匹配除字母和数字之外的所有内容。[A-Z] [a-z]
[0-9]
我有
string.matches("[^[A-Z][a-z][0-9]]")
这是不正确的吗?
匹配除特定字符之外的所有字符的正确语法是什么?
例如,我想匹配除字母和数字之外的所有内容。[A-Z] [a-z]
[0-9]
我有
string.matches("[^[A-Z][a-z][0-9]]")
这是不正确的吗?
是的,你不需要像那样嵌套。请改用以下内容:[]
"[^A-Za-z0-9]"
它都是一个字符类。
如果要匹配除字母以外的任何内容,则应查看 Unicode 属性。
\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。