Kotlin 正则表达式模式
正则表达式用于搜索文本和更高级的文本操作。正则表达式是几乎所有编程语言的基本组成部分,Kotlin 也不例外。在 Kotlin 中,对正则表达式的支持是通过 Regex 类提供的。此类的对象表示正则表达式,可用于字符串匹配目的。
我们可以很容易地发现正则表达式在不同类型的软件中的使用,从最简单到极其复杂的应用程序。
Kotlin 正则表达式
在 Kotlin 中,我们使用 Regex 构建正则表达式。
Regex("pen")
"pen".toRegex()
Regex.fromLiteral("pen")
模式定义了我们需要搜索或操作的文本。它由文本字面量和元字符组成。元字符是控制正则表达式求值的特殊字符。例如,使用 \s 我们搜索空格。
在 Kotlin 中,下表给出了一些正则表达式模式。Pattern Concept Example ^ Matches the first character of the string to the given character ^x $ Matches the last character of the string to the given character x$ . 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] \s This is the character class that matches whitespaces. \\s+ (Matches one or more whitespace character) \w This 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