1

I'd like to have a regexp in java to only strip off numbers if they are at the end of the string and everything after the underscore.

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

I found that
(?=[0-9_]).* works fine for 1,2,3 use case but not for 4) Any idea on how to refine it?

Thanks M.

2 Answers2

1

The following regex should work for most flavors:

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

We match either _ followed by anything until the end of the string. Or we match a bunch of digits until the end of string. (The end of string is represented by the anchor $)

Working demo.

Some flavors might choke upon the ?: which is really just an optimization. You can as well leave it out.

Martin Ender
  • 43,427
  • 11
  • 90
  • 130
0

(_.*|\d+)$ will match underscore followed by anything or digits at the end of a string. Does that meet your requirement? (I used http://www.regextester.com/ for testing.)

Mark A. Fitzgerald
  • 1,249
  • 1
  • 9
  • 20