解析特定点的字符串

时间:2017-11-21 12:26:58

标签: android regex replace

如果我有一个如下例所示的字符串,我如何保留 1.23(8752)

示例:

Testversion v1.23 (8752), beta v1.02 (458)

我正在尝试正则表达式,但到目前为止我运气不好,这只给出了1.23:

String result = input.replaceAll("[^\\d.]", "");

1 个答案:

答案 0 :(得分:1)

您可以使用.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*

input.replaceFirst(".*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*", "$1"); //v1.23 (8752)

Java Demo Link

解释

.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*.*?尽可能少地匹配任何内容

  • (v\\d+\\.\\d+\\s*\\(\\d+\\))(开始捕获群组

    • v\\d+\\.\\d+:匹配v\\d+一个或多个数字.字符,\\d+
    • \\s*\\(\\d+\\)\\s*零个或多个空格,然后(一个或多个数字)

    ).*:捕获组结束,.*匹配任何内容直到行尾