Kotlin 正则表达式示例:初学者指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin 正则表达式:面向初学者的完整指南



正则表达式 (regex) 是一种强大的工具,用于根据模式搜索、替换和验证字符串。在 Kotlin 中,正则表达式的处理通过 Regex 类实现,该类提供了便捷的文本处理方法。在本文中,我们将通过直观的示例讲解 Kotlin 正则表达式的基础知识,帮助您快速掌握这一工具。



什么是正则表达式?



正则表达式是一系列字符,定义了在文本中搜索的模式。例如,模式 \\\\d{3} 匹配连续三个数字,而 [A-Z]+ 匹配一个或多个大写字母。



在 Kotlin 中,使用 Regex 类处理正则表达式,可以通过两种方式创建:



// 方式 1:通过构造函数val regex1 = Regex("\\\\d+")

// 方式 2:通过扩展函数 toRegex()val regex2 = "\\\\d+".toRegex()


Kotlin 中 Regex 的主要方法



Regex 类提供了几个处理字符串的关键方法:



  • matches() — 检查整个字符串是否匹配模式
  • containsMatchIn() — 检查字符串是否至少包含一个匹配项
  • find() — 查找第一个匹配项
  • findAll() — 查找所有匹配项
  • replace() — 将匹配项替换为指定字符串
  • split() — 根据模式分割字符串


示例 1:验证电子邮件地址



让我们从一个实际示例开始——验证电子邮件地址的正确性:



fun isValidEmail(email: String): Boolean {    val emailRegex = Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$")    return emailRegex.matches(email)}

fun main() { val emails = listOf( "user@example.com", "invalid-email", "test@domain.co.uk", "@gmail.com" ) emails.forEach { email -> println("$email: ${if (isValidEmail(email)) "有效" else "无效"}") }}


执行结果:

user@example.com: 有效invalid-email: 无效test@domain.co.uk: 有效@gmail.com: 无效


示例 2:提取电话号码



假设我们有一段包含不同电话号码的文本,我们想要提取所有格式为 +7 (XXX) XXX-XX-XX 的号码:



fun extractPhoneNumbers(text: String): List {    val phoneRegex = Regex("""\\+7 \\(\\d{3}\\) \\d{3}-\\d{2}-\\d{2}""")    return phoneRegex.findAll(text).map { it.value }.toList()}

fun main() { val text = """ 联系方式: 经理:+7 (495) 123-45-67 支持:+7 (812) 987-65-43 备用:8-800-555-35-35 """.trimIndent() val phones = extractPhoneNumbers(text) println("找到的号码:") phones.forEach { println(it) }}


结果:

找到的号码:+7 (495) 123-45-67+7 (812) 987-65-43


请注意:号码 8-800-555-35-35 未被找到,因为它不符合我们的模式。



示例 3:替换和清理文本



正则表达式非常适合替换文本部分。例如,从字符串中删除所有 HTML 标签:



fun removeHtmlTags(html: String): String {    val tagRegex = Regex("<[^>]*>")    return tagRegex.replace(html, "")}

fun main() { val htmlText = """ <h1>标题</h1> <p>这是 <b>重要</b> 文本。</p> <a href="link.html">链接</a> """.trimIndent() val cleanText = removeHtmlTags(htmlText) println("清理后的文本:") println(cleanText)}


结果:



                
                

博客

书籍推荐