これはかなり単純明快なはずですが、私は答えを見つけたり、それを思い付くことができません。私は、常に1つ以上の末尾の数字と潜在的に他の数字を持つStringを持っています。私はすべての末尾の数字を除いて文字列からすべてを削除したい。末尾の数字を除くすべてを置き換える正規表現
いくつかの例のテストケース:
"1 test50" -> "50"
"anothertest10" -> "10"
"can contain spaces123" -> "123"
"ok1" -> "1"
私が最も明白なことを試みた:str.replaceAll(".*(\\d)+$","$1")
を、残念ながら.*
は、最初に一致しているので、それ以上のテストケースについて0,0,3,1
の代わり50,10,123,1
になります。
私は過去にほとんど使用していませんでしたが、私は後ろのものなどを使用する必要があると感じています。私はそれを自分の問題に適用する方法がわかりません。
'を参照して、正規表現のすべての末尾の数字と一致します
を使用することができます(。*?)(\ D +)$' [リンク](https://でregex101 .com/r/2pkcev/1) – Gurman
基本的に、文字列の末尾の数字を '[0-9] + $'パターンとマッチさせることができます。なぜあなたは 'replaceAll'を使いたいのですか?編集:文字列の終わりに到達するには 'str.replaceFirst("(?s)(?:。* \\ D)?(\\ d +)$ "、" $ 1 ")'文字列の改行。しかし、それは扱いにくいですか? –
@Gurmanありがとうございます!str.replaceAll( "。*?(\\ d +)$"、 "$ 1") 'は働いていました。 –