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)}结果:
博客
书籍推荐
推荐阅读