如何在Kotlin正则表达式中使用正则表达式开始标记(^)

时间:2018-09-27 15:50:51

标签: android regex kotlin

如何在Kotlin中检查字符串是否包含给定的正则表达式并以其开头?

我期望我能做到:

fun main(args: Array<String>) {
    var text = "test string"
    val regex = Regex.fromLiteral("^test")
    val matches: Boolean = text.contains(regex)
    assert(matches)
}

但这不起作用。它不带^就可以正常工作。即使执行matchesfind,或containsMatchIn之类的Regex运算符似乎也不起作用。

我缺少明显的东西吗?也许我不能使用开始的边界,或者我不应该使用它。

注意:我知道startsWith,但这不允许我使用正则表达式。我想使用正则表达式,因为我的代码具有比“测试字符串”更复杂的字符串。

1 个答案:

答案 0 :(得分:1)

Regex.fromLiteral("^test") 会生成一个\^test正则表达式,它与^test子字符串 itemally 相匹配。检查Regex.fromLiteral()的文档记录:

  

为指定的literal字符串返回文字正则表达式。

您只需要使用字符串文字制作一个正则表达式,使用

val regex = """^test""".toRegex()

请参见Kotlin demo

相关问题