1

Javaで正規表現を使用して、数値が文字列の最後にあり、すべてがアンダースコアの後にある場合にのみ数値を削除したいと思います。

1) massi_xxx -> massi
2) massi_12121 -> massi
3) massi123 -> massi
4) 123massi1 -> 123massi


(?= [0-9 _])。*は1,2,3のユースケースでは正常に機能しますが、4)では機能しないことがわかりました。

ありがとうM。

4

2 に答える 2

1

次の正規表現は、ほとんどのフレーバーで機能するはずです。

(?:_.*|\d*)$

_文字列の最後まで、いずれかとそれに続く何かを一致させます。または、文字列の終わりまで数字の束を照合します。(文字列の終わりはアンカーで表されます$

作業デモ。

いくつかのフレーバーは、?:実際には単なる最適化であることに窒息する可能性があります。省略してもかまいません。

于 2012-11-22T15:20:42.973 に答える
0

(_.*|\d+)$文字列の最後にアンダースコアとそれに続く任意の数字または数字に一致します。それはあなたの要件を満たしていますか?(テストにはhttp://www.regextester.com/を使用しました。)

于 2012-11-22T15:20:34.893 に答える