如果我有一个如下例所示的字符串,我该如何保留 1.23 (8752) ?
例子:
Testversion v1.23 (8752), beta v1.02 (458)
我正在尝试使用正则表达式,但到目前为止我很不走运,这只给出了 1.23:
String result = input.replaceAll("[^\\d.]", "");
最佳答案
您可以使用 .*?(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*
零个或多个空格然后(
一个或更多数字)
).*
:捕获组结束,.*
匹配任何内容直到行尾
关于android - 从某个点开始解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413113/