【问题标题】:What's a good regex to remove extraneous characters from the end of a string?从字符串末尾删除无关字符的好正则表达式是什么?
【发布时间】:2015-09-29 21:36:11
【问题描述】:

我正在寻找一个正则表达式来删除不需要的字符串末尾的字符,但可能会出现在字符串的前面(这是预期的并且很好)。

这是一个应该解析为“CARVER HOUSE - KITCHEN”的示例

CARVER HOUSE - KITCHEN(
CARVER HOUSE - KITCHEN[
CARVER HOUSE - KITCHEN - (
CARVER HOUSE - KITCHEN : 

这是另一个应该解析为“CARVER HOUSE : (NIGHT)[N1] - KITCHEN”的示例

CARVER HOUSE : (NIGHT)[N1] -  KITCHEN(
CARVER HOUSE : (NIGHT)[N1] -  KITCHEN[
CARVER HOUSE : (NIGHT)[N1] -  KITCHEN - (
CARVER HOUSE : (NIGHT)[N1] -  KITCHEN : 

所以基本上,应该找到最后一个字母或数字,而其他所有内容都被删除。

另外,我不是在寻找一个大而杂乱的方法,逐个字符地查找最后一个字母数字。这应该真的可以在一两行代码中完成。

谢谢

【问题讨论】:

  • 你试过了吗?
  • 尝试过类似"\W+$" 的“字符串末尾的非单词字符”?
  • @Reimeus 我尝试了一些东西,但它们并不漂亮(一点也不)。我正在考虑反转字符串以查看是否效果更好,然后将其反转回来,但这似乎也很混乱。
  • "[^0-9a-zA-Z]*$" 将定位尾随字符串。然后,您可以获取所需部分的子字符串,也可以删除尾随部分。您使用什么语言?
  • @tobias_k 谢谢!效果很好。

标签: java regex


【解决方案1】:

您可以使用像\W+$ 这样的正则表达式来查找字符串末尾的非单词字符并替换它们。

String s = "CARVER HOUSE : (NIGHT)[N1] -  KITCHEN - (";
s = s.replaceAll("\\W+$", "");
System.out.println(s);

结果是CARVER HOUSE : (NIGHT)[N1] - KITCHEN

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 2011-02-25
    • 2021-01-10
    • 2018-06-18
    • 2021-11-24
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多