📜  Kotlin 正则表达式模式

📅  最后修改于: 2022-05-13 01:54:35.081000             🧑  作者: Mango

Kotlin 正则表达式模式

正则表达式用于搜索文本和更高级的文本操作。正则表达式是几乎所有编程语言的基本组成部分,Kotlin 也不例外。在 Kotlin 中,对正则表达式的支持是通过 Regex 类提供的。此类的对象表示正则表达式,可用于字符串匹配目的。
我们可以很容易地发现正则表达式在不同类型的软件中的使用,从最简单到极其复杂的应用程序。
Kotlin 正则表达式
在 Kotlin 中,我们使用 Regex 构建正则表达式。

Regex("pen")
"pen".toRegex()
Regex.fromLiteral("pen")

模式定义了我们需要搜索或操作的文本。它由文本字面量和元字符组成。元字符是控制正则表达式求值的特殊字符。例如,使用 \s 我们搜索空格。
在 Kotlin 中,下表给出了一些正则表达式模式。

PatternConceptExample
^Matches the first character of the string to the given character^x
$Matches the last character of the string to the given characterx$
.This pattern matches any single character.ab.
|This is known as the alternation/ OR operator. This combines two or more patterns.^x | a$
?This matches the occurrence of the previous character at most one time.ab?
+This matches the occurrence of the previous character at least one time.abc+
*This matches the occurrence of the previous character zero or more times.xyz*
[pqr]This matches any single character present in the set.[pqr]
[i-p]This matches any single character within the range.[i-p]
[^fsd]This implies negation. It matches any character except the ones specified.[^fsd]
\sThis is the character class that matches whitespaces.\\s+ (Matches one or more whitespace character)
\wThis is the character class that matches any character that forms a word.\\w

注意:-首先我们创建了一个模式,然后我们可以使用其中一个函数应用于文本字符串上的模式。函数包括 find()、findall()、replace() 和 split()。

Kotlin find() 方法

它返回输入中正则表达式的第一个匹配项,从指定的起始索引开始。在 Kotlin 中,默认的起始索引为 0。
使用 find 方法的 Kotlin 程序 -

Kotlin
fun main(args : Array) {
 
    val company = "GeeksforGeeks : A computer science portal for students"
 
    val pattern = "science".toRegex()
 
    val found = pattern.find(company)
 
    val m = found?.value
    val index = found?.range
 
    println("$m found at indexes: $index")
 
}


Kotlin
fun main(args : Array) {
 
    val company = "GeeksforGeeks"
 
    val pattern = "Geeks".toRegex()
 
    val patt = pattern.findAll(company)
 
    patt.forEach { f ->
        val m = f.value
        val index = f.range
        println("$m indexes are: $index")
     }
}


Kotlin
fun main(args : Array) {
 
    val names = listOf("GeeksforGeeks", "GeekyAnts", "McGeek")
 
    val pattern = "..Geek".toRegex()
 
    names.forEach { name ->
        if (pattern.containsMatchIn(name)) {
            println("$name matches")
 
        }
    }
}


输出:

science found at indexes: 27..33

Kotlin findAll() 方法

它返回给定输入字符串中所有出现的正则表达式的序列。
使用 findAll 方法的 Kotlin 程序 –

科特林

fun main(args : Array) {
 
    val company = "GeeksforGeeks"
 
    val pattern = "Geeks".toRegex()
 
    val patt = pattern.findAll(company)
 
    patt.forEach { f ->
        val m = f.value
        val index = f.range
        println("$m indexes are: $index")
     }
}

输出:

Geeks indexes are: 0..4
Geeks indexes are: 8..1

点 (.) 元字符

点 (.) 元字符表示文本中的任何单个字符。
Kotlin 程序 –

科特林

fun main(args : Array) {
 
    val names = listOf("GeeksforGeeks", "GeekyAnts", "McGeek")
 
    val pattern = "..Geek".toRegex()
 
    names.forEach { name ->
        if (pattern.containsMatchIn(name)) {
            println("$name matches")
 
        }
    }
}

输出:

GeeksforGeeks matches
McGeek matches