Javaで正規表現を使用して、数値が文字列の最後にあり、すべてがアンダースコアの後にある場合にのみ数値を削除したいと思います。
1) massi_xxx -> massi
2) massi_12121 -> massi
3) massi123 -> massi
4) 123massi1 -> 123massi
(?= [0-9 _])。*は1,2,3のユースケースでは正常に機能しますが、4)では機能しないことがわかりました。
ありがとうM。
次の正規表現は、ほとんどのフレーバーで機能するはずです。
(?:_.*|\d*)$
_
文字列の最後まで、いずれかとそれに続く何かを一致させます。または、文字列の終わりまで数字の束を照合します。(文字列の終わりはアンカーで表されます$
)
いくつかのフレーバーは、?:
実際には単なる最適化であることに窒息する可能性があります。省略してもかまいません。
(_.*|\d+)$
文字列の最後にアンダースコアとそれに続く任意の数字または数字に一致します。それはあなたの要件を満たしていますか?(テストにはhttp://www.regextester.com/を使用しました。)