Kotlin 正则表达式

时间:2025-02-08 09:15:08
fun testRegex(): Unit { // 构造Regex表达式 val r1 = Regex("[a-z]+") val r2 = Regex("[a-z]+", RegexOption.IGNORE_CASE) val r3 = "[A-Z]+".toRegex() println("matches() 函数") // matches() 函数,输入字符串全部匹配 val x1 = r1.matches("ABCxyz") println(x1) // 输出:false,这个正则表达式要求输入字符串每个字符都是小写,"ABC"大写不匹配 val x2 = r2.matches("ABCxyz") println(x2) // 输出:true,RegexOption.IGNORE_CASE,正则表达式忽略大小写 val x3 = r3.matches("OPQSN") println(x3) // 输出:true,都是大写,满足[A-Z] println("containsMatchIn() 函数") // containsMatchIn() 函数,输入字符串至少有一个匹配就返回true,没有匹配就返回false val y1 = r1.containsMatchIn("a12345.") println(y1) // 输出:true,输入字符串中"a"就满足正则表达式[a-z] val y11 = r1.containsMatchIn("ABC12345") println(y11) // 输出:false,输入字符串没有一个满足正则表达式[a-z] println("matchEntire() 函数") // matchEntire() 函数,如果输入字符串全部匹配则返回一个MatcherMatchResult对象,否则返回null val z1 = r1.matchEntire("kotlin") println(z1) // 输出:@27a418fe,输入字符串全部满足正则表达式 println(z1?.value) // 输出:kotlin,通过访问MatcherMatchResult的value属性,获得匹配的值 val z11 = r1.matchEntire("kotlin_java_C++") println(z11) // 输出:null,输入中的"_"、"+"不匹配正则表达式[a-z] println(z11?.value) // 输出:null println("replace(input: CharSequence, replacement: String):String 函数") // replace(input: CharSequence, replacement: String):String 函数, // 将输入字符串input中匹配的部分 替换成replacement内容 val a1 = r1.replace("abc12345","TEST*") println(a1) // 输出:TEST*12345,输入字符串中的"abc"匹配正则表达式[a-z],因此它被替换了 val a11 = r1.replace("aBcD567xyz#", "TEST*") println(a11) // 输出:TEST*BTEST*D567TEST*#,输入字符串中的"a"、"c"、"xyz"匹配正则表达式[a-z] println("replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String 函数") // 把输入字符串中匹配到的值,用transform()函数处理后的新值进行替换 val b1 = r1.replace("ab345cD") { "[${it.value}]" } println(b1) // 输出:[ab]345[c]D,将输入字符串中匹配正则表达式[a-z]的内容用"[]"标出来了 println("find() 函数") // find() 函数,返回 输入字符串中第一个匹配的MatcherMatchResult对象 val c1 = r1.find("ABcd5678efG") println(c1) // 输出:@77459856 println(c1?.value) // 输出:cd,获得匹配的值 println("findAll() 函数") // findAll() 函数,返回 输入字符串中所有匹配的MatchResult序列 val d1 = r1.findAll("ABcd5678efGhi") println(d1) // 输出:@4dd8da9 d1.forEach { println(it.value) } // 输出:cd ef hi,遍历输出所有匹配的值 }