如果我有一个如下例所示的字符串,我如何保留 1.23(8752)?
示例:
Testversion v1.23 (8752), beta v1.02 (458)
我正在尝试正则表达式,但到目前为止我运气不好,这只给出了1.23:
String result = input.replaceAll("[^\\d.]", "");
答案 0 :(得分:1)
您可以使用.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*
input.replaceFirst(".*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*", "$1"); //v1.23 (8752)
解释
.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*
:.*?
尽可能少地匹配任何内容
(v\\d+\\.\\d+\\s*\\(\\d+\\))
:(
开始捕获群组
v\\d+\\.\\d+
:匹配v
,\\d+
一个或多个数字.
字符,\\d+
\\s*\\(\\d+\\)
:\\s*
零个或多个空格,然后(
一个或多个数字)
).*
:捕获组结束,.*
匹配任何内容直到行尾