正則(Regex)通常是指正則運算式,用於搜索字串或替換正則運算式對象。 要使用它,需要使用Regex(pattern:String)
類。 Kotlin Regex
類可以在kotlin.text.regex
包中找到。
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(): Pattern 或 fun toString(): String |
它以字串形式返回正則運算式。 |
Regex 類檢查包含輸入模式的示例
fun main(args: Array<String>){
val regex = Regex(pattern = "ko")
val matched = regex.containsMatchIn(input = "kotlin")
println("是否匹配:"+matched)
}
執行上面示例代碼,得到以下結果 -
是否匹配:true
正則運算式函數的結果基於匹配正則運算式模式和輸入字串。某些函數檢查部分匹配,而某些檢查完全匹配。
containsMatchIn()正則運算式的示例
fun main(args: Array<String>){
val regex = """a([bc]+)d?""".toRegex()
val matched = regex.containsMatchIn(input = "xabcdy")
println("是否匹配:"+matched)
}
執行上面示例代碼,得到以下結果 -
是否匹配:true
matches(input: CharSequence): Boolean 正則運算式的示例
matches(input: CharSequence)
正則運算式的布爾函數檢查所有輸入字元序列是否匹配正則運算式。
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)
}
執行上面示例代碼,得到以下結果 -
false
false
true
matchEntire(input: CharSequence): MatchResult?正則運算式示例
matchEntire()
函數用於匹配模式中的完整輸入字元。
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)
}
執行上面示例代碼,得到以下結果 -
abcd
null
100
null
find(input: CharSequence, startIndex: Int = 0): MatchResult? 正則運算式示例
find
函數用於從regex
對象中查找輸入字元序列。
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)
}
執行上面示例代碼,得到以下結果 -
mymail@google.com
123-456-7890
findAll(input: CharSequence, startIndex: Int = 0): Sequence 正則運算式示例
正則運算式的findAll()
函數在提供的模式的基礎上返回匹配結果的序列。
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)
}
執行上面示例代碼,得到以下結果 -
12 34 56 7 8
replace(input: CharSequence, replacement: String): String 正則運算式示例
Regex replace()
函數用指定的替換字串替換輸入字元序列中的所有匹配模式。
fun main(args: Array<String>){
val replaceWith = Regex("beautiful")
val resultString = replaceWith.replace("this picture is beautiful","awesome")
println(resultString)
}
執行上面示例代碼,得到以下結果 -
this picture is awesome
replaceFirst(input: CharSequence, replacement: String): String 正則運算式示例
正則運算式replaceFirst()
函數用指定的替換字串替換輸入字元序列中第一次出現的匹配模式。
fun main(args: Array<String>){
val replaceWith = Regex("beautiful")
val resultString = replaceWith.replaceFirst("nature is beautiful, beautiful is nature","awesome")
println(resultString)
}
執行上面示例代碼,得到以下結果 -
nature is awesome, beautiful is nature
split(input: CharSequence, limit: Int = 0): List 正則運算式示例
regex split()
函數根據提供的模式拆分輸入字元序列。 此拆分值放在List
中返回。
fun main(args: Array<String>){
val splitedValue = Regex("""\d+""").split("ab12cd34ef")
val nonsplited= Regex("""\d+""").split("nothing match to split" )
println(splitedValue)
println(nonsplited)
}
執行上面示例代碼,得到以下結果 -
[ab, cd, ef]
[nothing match to split]
上一篇:
從Java調用Kotlin代碼
下一篇:
Kotlin正則運算式模式