从字符串末尾删除无关字符有什么好的正则表达式?

Nic*_*len 1 java regex

我正在寻找一个正则表达式来删除不需要的字符串末尾的字符,但可能在字符串的早期出现(这是预期的和好的).

这是一个应该解决"CARVER HOUSE - KITCHEN"的例子

CARVER HOUSE - KITCHEN(
CARVER HOUSE - KITCHEN[
CARVER HOUSE - KITCHEN - (
CARVER HOUSE - KITCHEN : 
Run Code Online (Sandbox Code Playgroud)

这是另一个应该解决"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 : 
Run Code Online (Sandbox Code Playgroud)

所以基本上,应该找到最后一个字母或数字,其他一切都被打破了.

另外,我并不是在找一个粗略的方法,逐个字符地找到最后一个字母数字.这应该可以在一行或两行代码中完成.

谢谢

tob*_*s_k 7

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

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

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