我写这封信是为了删除只有小写字母的字符串中的所有非字母数字字符.
我正在使用replaceAll函数,并查看了一些正则表达式。
我的参考资料来自:https://www.vogella.com/tutorials/JavaRegularExpressions/article.html,它表明
\t\n\x0b\r\f
我尝试了Java的折叠,但是结果并没有删除空格或符号:
lowercased = lowercased.replaceAll("\\W\\s", "");
产出:
amanaplanac analp anam a
我能知道怎么回事吗?
发布于 2020-09-05 18:08:44
Regex \W\s的意思是“一个非单词字符和一个空格字符”。
如果要替换其中之一的字符,请使用其中之一:
\W|\s |意为或[\W\s],其中[ ]是一个字符类,在本例中它合并了内置的特殊字符类\W和\s,因为它们就是.在这两者中,我建议使用第二个。
当然,拥有\s是多余的,因为\s意味着空白字符,而\W意味着非单词字符,而且由于空格不是字字符,仅使用\W就足够了。
lowercased = lowercased.replaceAll("\\W+", "");发布于 2020-09-05 18:07:52
使用| (或操作符),比如\W|\s,因为\W和\s都是独立的情况,您想要替换它们。而且,由于空格不是字字符,所以只能使用\W。
lowercased = lowercased.replaceAll("\\W|\\s", "");发布于 2020-09-05 18:24:35
Regex \W用于匹配字符的非数字(0-9)、字母(A-Z和a-z)和下划线(_)。/s是用来匹配空间的。
因为/W已经注意到匹配非字母数字字符(不包括下划线)。不需要使用\s。
因此,如果使用\W,则允许下划线(_)带有字母数字值。
使用以下方法也可以排除下划线。
lowercased = lowercased.replaceAll("\\W|_", "");https://stackoverflow.com/questions/63756988
复制相似问题