首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用元字符或字符类替换字符串中的字符

使用元字符或字符类替换字符串中的字符
EN

Stack Overflow用户
提问于 2020-09-05 18:00:01
回答 3查看 69关注 0票数 0

我写这封信是为了删除只有小写字母的字符串中的所有非字母数字字符.

我正在使用replaceAll函数,并查看了一些正则表达式。

我的参考资料来自:https://www.vogella.com/tutorials/JavaRegularExpressions/article.html,它表明

\t\n\x0b\r\f

  • \W:
  • \s :空格字符,缩写为:非单词字符^\w。

我尝试了Java的折叠,但是结果并没有删除空格或符号:

lowercased = lowercased.replaceAll("\\W\\s", "");

产出:

amanaplanac analp anam a

我能知道怎么回事吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-05 18:08:44

Regex \W\s的意思是“一个非单词字符和一个空格字符”。

如果要替换其中之一的字符,请使用其中之一:

  • \W|\s |意为或

  • [\W\s],其中[ ]是一个字符类,在本例中它合并了内置的特殊字符类\W\s,因为它们就是.

在这两者中,我建议使用第二个。

当然,拥有\s是多余的,因为\s意味着空白字符,而\W意味着非单词字符,而且由于空格不是字字符,仅使用\W就足够了。

代码语言:javascript
复制
lowercased = lowercased.replaceAll("\\W+", "");
票数 3
EN

Stack Overflow用户

发布于 2020-09-05 18:07:52

使用| (或操作符),比如\W|\s,因为\W\s都是独立的情况,您想要替换它们。而且,由于空格不是字字符,所以只能使用\W

代码语言:javascript
复制
lowercased = lowercased.replaceAll("\\W|\\s", "");
票数 0
EN

Stack Overflow用户

发布于 2020-09-05 18:24:35

Regex \W用于匹配字符的非数字(0-9)、字母(A-Za-z)和下划线(_)。/s是用来匹配空间的。

因为/W已经注意到匹配非字母数字字符(不包括下划线)。不需要使用\s

因此,如果使用\W,则允许下划线(_)带有字母数字值。

使用以下方法也可以排除下划线。

代码语言:javascript
复制
lowercased = lowercased.replaceAll("\\W|_", "");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63756988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档