【发布时间】:2017-10-03 07:52:23
【问题描述】:
这应该很简单,但我找不到答案,也找不到答案。我有一个字符串,它总是有一个或多个尾随数字,其他地方可能还有其他数字。我想从字符串中删除除所有尾随数字之外的所有内容。
一些示例测试用例:
"1 test50" -> "50"
"anothertest10" -> "10"
"can contain spaces123" -> "123"
"ok1" -> "1"
我尝试了最明显的东西:str.replaceAll(".*(\\d)+$","$1"),但不幸的是.*首先匹配,所以对于上面的测试用例,它将导致0,0,3,1而不是50,10,123,1。
我觉得我需要使用后视或其他东西,尽管我过去几乎没有使用过它们,而且我不知道如何将它应用到我的问题上。
【问题讨论】:
-
(.*?)(\d+)$Link -
基本上,您可以将字符串末尾的数字与
[0-9]+$模式匹配。为什么要使用replaceAll?编辑:您不妨使用str.replaceFirst("(?s)(?:.*\\D)?(\\d+)$","$1")更快地到达字符串末尾并支持字符串中的换行符。但是看起来是不是很麻烦? -
@Gurman 谢谢!
str.replaceAll(".*?(\\d+)$","$1")工作。
标签: java regex string digits replaceall