正则表达式只删除字符串末尾_后的结束数字或字符

时间:2012-11-22 15:14:08

标签: regex chars

我想在java中使用regexp,只有当它们位于字符串的末尾并且在下划线之后的所有内容时才会删除数字。

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

我发现了     (?= [0-9 _])。* 适用于1,2,3用例但不适用于4) 关于如何改进它的任何想法?

由于 微米。

2 个答案:

答案 0 :(得分:1)

以下正则表达式适用于大多数口味:

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

我们匹配_后跟任何内容,直到字符串结束。或者我们匹配一堆数字直到字符串的结尾。 (字符串的结尾由锚$

表示

Working demo.

有些风味可能会扼杀?:,这实际上只是一种优化。你也可以把它留下来。

答案 1 :(得分:0)

(_.*|\d+)$将匹配下划线,后跟字符串末尾的任何内容或数字。这符合您的要求吗? (我使用http://www.regextester.com/进行测试。)