【问题标题】:Regex pattern to exclude numbers and special characters in a string正则表达式模式排除字符串中的数字和特殊字符
【发布时间】:2017-09-20 18:58:23
【问题描述】:

正则表达式模式排除字符串中的数字和特殊字符。
我需要在下面的字符串中排除数字和特殊字符。

名称为“11.KGGS.003022..CBCL..”的服务已经在 2017 年 4 月 17 日星期一 00:00:00 和 9999 年 12 月 30 日星期四 00:00:00。

我需要在 tableau 中使用该模式,而 regex[^0-9] 在其中不起作用。 请帮帮我。

【问题讨论】:

  • 输出应该是什么样子?
  • 你能给我们展示一个预期输出的例子吗?
  • string.replaceAll("\\W+|\\d+","")。删除所有特殊字符和数字
  • 输出应该看起来像“A service with name is already active”

标签: java regex


【解决方案1】:

你可以像这样使用replaceAll

str = str.replaceAll("[0-9!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]", "");

输出

A service with name KGGSCBCL is already active between Mon Apr    and Thu Dec  

我不确定空格是否被视为特殊字符,如果是,您可以使用它来代替:

str = str.replaceAll("[0-9!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?\\s\\n]", "");
//------------------------------------------------Space and back line ^--^

输出

AservicewithnameKGGSCBCLisalreadynactivebetweenMonAprandThuDec

如果你只想在每个单词之间留一个空格,你可以使用这个:

str = str.replaceAll("[0-9!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]", "").
        replaceAll("\\s+", " ");
//------------------^^^^----^---------replace multiple spaces with only one

输出

A service with name KGGSCBCL is already nactive between Mon Apr and Thu Dec 

解决方案 2:

排除数字和特殊字符其余的应该只有字母[a-zA-Z],所以你也可以使用这个:

str = str.replaceAll("[^a-zA-Z]", "");

【讨论】:

  • 空格不也算特殊字符吗?
  • @XtremeBaumer mmm,我真的不知道,我会在我的答案中添加另一部分,包括空格
  • @XtremeBaumer 在这种情况下也应该将后面的行视为特殊字符?
  • 你指的是哪条背线?
  • 没错,这等于\\W+|\\d+,其中 \\W 是所有非单词字符= 特殊字符和 \\d 所有数字
猜你喜欢
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多