regex - 如何通过Kotlin或Java中的正则表达式获取字符串的一部分?

标签 regex kotlin

假设您有一个字符串http://server.com/s123456,并且想要从中获取123456。或http://server.com/s123456&a=100并获取123456,100。要在其中包含字符串部分的许多不同情况。

为了匹配字符串,我使用正则表达式。

@Test
fun test() {
    val text = "http://server.com/s123456" // Source string.
    val reg = "^http://server.com/s\\d+\$".toRegex()
    assertEquals(true, reg.matches(text))

    // Try to split the string with findAll().
    val a: Sequence<MatchResult> = reg.findAll(text, 0)
    val names = a.map { it.groupValues[0] }.joinToString()
    println(names) // http://server.com/s123456
}

但是它不会将源字符串拆分为字符和数字,只是打印:http://server.com/s123456。有没有一种写掩码的方法,以便我们可以从字符串中检索数字(或其他任何部分)?

最佳答案

您需要在感兴趣的部分周围使用捕获组。使用此"^http://server.com/s(\\d+)\$"并使用it.groupValues[1]

关于regex - 如何通过Kotlin或Java中的正则表达式获取字符串的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264832/

相关文章:

javascript - 如何解析文本

python - 正则表达式:如何捕获用逗号分隔千位的数字?

Python:正则表达式搜索

android - 运行多个测试时,只有第一个测试通过 TestScheduler (Kotlin)

android - “Invalid platform app” 使用 Instagram 基本显示 API 时出错

regex - 在 lua 5.1 中使用 string.gmatch 拆分字符串时包含空匹配

regex - 需要一个字母数字的正则表达式,其中包含 1 个连字符和单词之间的空格

unit-testing - 如何对 Kotlin 挂起函数进行单元测试

java - 在应用程序中间安装 apk - Android Studio

Android Jetpack Compose + OKHttp