Regexp to strip off only ending numbers or chars after _ at the end of a string

StackOverflow https://stackoverflow.com/questions/13515608

  •  01-12-2021
  •  | 
  •  

Вопрос

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.

Это было полезно?

Решение

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.

Другие советы

(_.*|\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.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top