尝试从字符串末尾删除字符时,Java中存在问题。这现在已经成为我无法解决的通用模式匹配问题。如何使用正则表达式替换字符串末尾的字符
PROBLEM =从字符串的末尾删除所有的加号,减号和空格(不会打扰空白)。
Pattern myRegex;
Matcher myMatch;
String myPattern = "";
String myString = "";
String myResult = "";
myString="surname; forename--+ + --++ "
myPattern="^(.*)[-+ ]*$"
//expected result = "surname; forename"
myRegex = Pattern.compile(myPattern);
myMatch = myRegex.matcher(myString);
if (myMatch.find()) {
myResult = myMatch.group(1);
} else {
myResult = myString;
}
我能得到这个工作的唯一方法是通过反转字符串和扭转模式匹配,然后我扭转结果得到正确的答案!
试试这个正则表达式“^(。*?)[ - +] * $”来代替。我添加了一个'?'来使'*'非贪婪。 – redneb
可能类似于'myString.replaceAll(“[ - +] + $”,“”)' – Thilo
@redneb:是的,一开始贪婪的'。*'会吃掉整个字符串。 – Thilo