这很简单,但我如何创建一个正则表达式去除除
之外的任何内容我认为前两个的正则表达式是[^a-zA-Z_0-9]
,但我怎么能为它添加逗号。
另外,它会是以下吗?
"string".replaceAll("expression", null);
答案 0 :(得分:3)
首先,您不能将null
用于替换值。它会给你java.lang.NullPointerException
。你必须在那里使用字符串。例如,代替null
使用空""
。
关于正则表达式,如果您需要在角色类[]
中添加任何内容,只需将它们添加到那里即可。例如[^a-z,*.]
此外,您的a-zA-Z_0-9
可以替换为\\w
[^\\w,]
答案 1 :(得分:1)
[^a-zA-Z0-9,]
^ add this
此外,字符串是不可变的,因此replaceAll
不会影响原始字符串,但会创建具有替换字符的新字符串,因此您需要将其存储在某处(可能是对原始字符串的引用)。
""
作为替换,而不是null
。 请尝试使用
yourString = yourString.replaceAll("[^a-zA-Z0-9,]","");
另一件事是您正在使用的正则表达式也会阻止_
被删除。如果那是故意的,那么您可以简单地使用预定义的字符类_
而不是a-z
A-Z
0-9
\w
(在Javas String中需要将其写为{ {1}}因为"\\w"
需要转义)所以您的代码看起来像
\
答案 2 :(得分:0)
不,你应该这样做:
value = "string".replaceAll("[\\W_,]", "");
我的模式并没有使用否定。
您应该将其替换为空字符串,而不是null
,并且您必须将结果分配给字符串,因为字符串是不可变的。
你可以简化你的正则表达式。
否则只需将,
添加到否定的字符类中。
答案 3 :(得分:0)
[\w,]+
是与字母数字,下划线和逗号匹配的正则表达式。
此处\w
相当于[A-Za-z0-9_]
[\W,]+
是正则表达式,它匹配除字母数字,下划线和逗号之外的所有内容。
此处\W
- 匹配任何不是单词字符的字符(字母数字和下划线),等同于[^A-Za-z0-9_]