替换不在范围内的所有字符(Java String)
如何替换不符合条件的字符串中的所有字符。 我在使用NOT运算符时遇到了麻烦。
具体来说,我正在尝试删除所有不是数字的字符,到目前为止我已经尝试过了:
String number = "703-463-9281"; String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change) String number3 = number.replaceAll("[0-9]", ""); // produces: "--" String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change) String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"
解释一下:字符类开头的^将否定该类但它必须在类中才能工作。 字符类外部的相同字符是字符串/行开头的锚点。
您可以尝试这样做:
"[^0-9]"
这是一个快速的字符类定义备忘单,以及它如何与一些正则表达式元字符交互。
-
[aeiou]
– 恰好匹配一个小写元音 -
[^aeiou]
– 匹配一个不是小写元音的字符( 否定字符类) -
^[aeiou]
– 匹配锚定在该行开头的小写元音 -
[^^]
– 匹配不是插入符号的字符/'^'
-
^[^^]
– 匹配行开头不是插入符号的字符 -
^[^.].
– 在行的开头匹配除文字句点之外的任何内容,后跟“任意”字符 -
[az]
– 恰好匹配'a'
到'z'
范围内的一个字符(即所有小写字母) -
[az-]
– 匹配'a'
,'z'
或'-'
(文字短划线) -
[.*]*
– 匹配点和星号的连续序列(可能是空的) -
[aeiou]{3}
– 匹配3个连续的小写元音(所有元音都不一样) -
\[aeiou\]
– 匹配字符串"[aeiou]"
参考
- regular-expressions.info/Character类 , Anchors , Dot , Repetition
相关问题
- 正则表达式:为什么
[01-12]
范围不按预期工作? - 字符类减法,从Java语法转换为RegexBuddy
- 如何从class级中排除某些角色?