Kotlin教程:Regex正则表达式

2020-04-2410:33:42编程语言入门到精通Comments12,135 views1字数 4168阅读模式

正则(Regex)通常是指正则表达式,用于搜索字符串或替换正则表达式对象。 要使用它,需要使用Regex(pattern:String)类。 Kotlin Regex类可以在kotlin.text.regex包中找到。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

Kotlin Regex构造函数

构造函数描述
Regex(pattern: String)它从给定的字符串模式创建正则表达式。
Regex(pattern: String, option: RegexOption)它从给定的字符串模式创建一个正则表达式并给出单个选项。
Regex(pattern: String, options: Set<RegexOption>)它根据给定的字符串模式和给定选项集创建正则表达式。

正则表达式函数

方法描述
fun containsMatchIn(input: CharSequence): Boolean它表示正则表达式包含至少一个输入字符
fun find(input: CharSequence, startIndex: Int = 0): MatchResult?它返回输入字符序列中正则表达式的第一个匹配项,从给定的startIndex开始。
fun findAll(input: CharSequence, startIndex: Int = 0): Sequence<MatchResult>它返回输入字符串中所有出现的正则表达式,从给定的startIndex开始。
funmatchEntire(input: CharSequence): MatchResult?它用于匹配模式中的完整输入字符。
infix fun matches(input: CharSequence): Boolean它指示所有输入字符序列是否与正则表达式匹配。
fun replace(input: CharSequence, replacement: String): String它用给定的替换字符串替换正则表达式的所有输入字符序列。
fun replaceFirst(input: CharSequence, replacement: String): String它用给定的替换字符串替换给定输入字符串中第一次出现的正则表达式。
fun split(input: CharSequence, limit: Int = 0): List<String>它分割正则表达式的输入字符序列。
fun toPattern(): Patternfun toString(): String它以字符串形式返回正则表达式。

Regex 类检查包含输入模式的示例

fun main(args: Array<String>){
    val regex = Regex(pattern = "ko")
    val matched = regex.containsMatchIn(input = "kotlin")
    println("是否匹配:"+matched)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

是否匹配:true
Shell

正则表达式函数的结果基于匹配正则表达式模式和输入字符串。某些函数检查部分匹配,而某些检查完全匹配。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

containsMatchIn()正则表达式的示例

fun main(args: Array<String>){

    val regex = """a([bc]+)d?""".toRegex()
    val matched = regex.containsMatchIn(input = "xabcdy")
    println("是否匹配:"+matched)

}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

是否匹配:true
Shell

matches(input: CharSequence): Boolean 正则表达式的示例

matches(input: CharSequence)正则表达式的布尔函数检查所有输入字符序列是否匹配正则表达式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){

    val regex = """a([bc]+)d?""".toRegex()
    val matched1 = regex.matches(input = "xabcdy")
    val matched2 = regex.matches(input = "xabcdyabcd")
    val matched3 = regex.matches(input = "abcd")
    println(matched1)
    println(matched2)
    println(matched3)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

false
false
true
Shell

matchEntire(input: CharSequence): MatchResult?正则表达式示例

matchEntire()函数用于匹配模式中的完整输入字符。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){

    val regex = Regex("abcd")
    val matchResult1 = regex.matchEntire("abcd")?.value
    val matchResult2 = regex.matchEntire("abcda")?.value

    val matchResult3 = Regex("""\d+""").matchEntire("100")?.value
    val matchResult4 = Regex("""\d+""").matchEntire("100 dollars")?.value

    println(matchResult1)
    println(matchResult2)
    println(matchResult3)
    println(matchResult4)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

abcd
null
100
null
Shell

find(input: CharSequence, startIndex: Int = 0): MatchResult? 正则表达式示例

find函数用于从regex对象中查找输入字符序列。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){

    val emailParttern = Regex("""\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6}""")
    val email :String? = emailParttern.find("this is my email mymail@google.com")?.value
    println(email)
    val phoneNumber :String? = Regex(pattern = """\d{3}-\d{3}-\d{4}""")
        .find("phone: 123-456-7890, e..")?.value
    println(phoneNumber)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

mymail@google.com
123-456-7890
Shell

findAll(input: CharSequence, startIndex: Int = 0): Sequence 正则表达式示例

正则表达式的findAll()函数在提供的模式的基础上返回匹配结果的序列。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){
    val foundResults = Regex("""\d+""").findAll("ab12cd34ef 56gh7 8i")
    val result = StringBuilder()
    for (findText in foundResults) {
        result.append(findText.value + " ")
    }
    println(result)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

12 34 56 7 8
Shell

replace(input: CharSequence, replacement: String): String 正则表达式示例

Regex replace()函数用指定的替换字符串替换输入字符序列中的所有匹配模式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){
    val replaceWith = Regex("beautiful")
    val resultString = replaceWith.replace("this picture is beautiful","awesome")
    println(resultString)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

this picture is awesome
Shell

replaceFirst(input: CharSequence, replacement: String): String 正则表达式示例

正则表达式replaceFirst()函数用指定的替换字符串替换输入字符序列中第一次出现的匹配模式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){
    val replaceWith = Regex("beautiful")
    val resultString = replaceWith.replaceFirst("nature is beautiful, beautiful is nature","awesome")
    println(resultString)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

nature is awesome, beautiful is nature
Shell

split(input: CharSequence, limit: Int = 0): List 正则表达式示例

regex split()函数根据提供的模式拆分输入字符序列。 此拆分值放在List中返回。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

fun main(args: Array<String>){
    val splitedValue = Regex("""\d+""").split("ab12cd34ef")
    val nonsplited= Regex("""\d+""").split("nothing match to split" )
    println(splitedValue)
    println(nonsplited)
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

[ab, cd, ef]
[nothing match to split]

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/kotlin/kotlin-regular-expressions-introduction.html#article-start文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18326.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/18326.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定