android - 从某个点开始解析字符串

标签 android regex replace

如果我有一个如下例所示的字符串,我该如何保留 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)

Java Demo Link

解释

.*?(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/

相关文章:

android - 性能 : ViewGroup with Children VS. 自定义绘制 View

c# - Uri.UnescapeDataString 在不同的计算机上失败

php - MySQL 通过 "oe"、 "ae"、 "ue"找到元音变音

replace - 查找行尾并将其逐字替换为 "\n"

javascript - 正则表达式中的 encodeURIComponent

jquery - 在设定时间后更换 <DIV>

java - 在不丢失数据的情况下切换 Activity

Android SeekBarPreference 自定义 View

java - 如何在android中的另一个类中调用带有View类型参数的函数

regex - 在 PowerShell 中转换文件字符串的正则表达式