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 回答