文字列の最後から文字を削除しようとすると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