麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

Kotlin利用Regex如何構建正則表達式詳解

2024-07-21 23:03:42
字體:
來源:轉載
供稿:網友

前言

對于正則表達式,相信很多人都知道,但是很多人的第一感覺就是難學,因為看第一眼時,覺得完全沒有規(guī)律可尋,而且全是一堆各種各樣的特殊符號,完全不知所云。

其實只是對正則不了解而以,了解了你就會發(fā)現,原來就這樣啊~~正則所用的相關字符其實不多,也不難記,更不難懂,唯一難的就是組合起來之后,可讀性比較差,而且不容易理解,最近在學習kotlin,Kotlin 提供了一個正則表達式類 Regex,下面來一起學習下吧。

Regex 提供了豐富而簡單實用的函數。

 

函數名稱 功能說明
matches(input: CharSequence): Boolean 輸入字符串全部匹配
containsMatchIn(input: CharSequence): Boolean 輸入字符串至少有一個匹配
matchEntire(input: CharSequence): MatchResult? 輸入字符串全部匹配,返回一個匹配結果對象
replace(input: CharSequence, replacement: String): String 把輸入字符串中匹配的部分替換成replacement的內容
replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String 把輸入字符串中匹配到的值,用函數 transform映射之后的新值替換
find(input: CharSequence, startIndex: Int = 0): MatchResult? 返回輸入字符串中第一個匹配的值
findAll(input: CharSequence, startIndex: Int = 0): Sequence<MatchResult> 返回輸入字符串中所有匹配的值MatchResult的序列

 

matches

輸入的字符串全部匹配“正則表達式”返回 true,否則返回 false。

 val r1 = Regex("[a-z]+") println(r1.matches("ABCdef")) val r2 = Regex("[a-z]+", RegexOption.IGNORE_CASE) //忽略大小寫 println(r2.matches("ABCdef")) val r3 = Regex("[A-Z]+") println(r3.matches("ABC")) val r4 = "[A-Z]+".toRegex() println(r4.matches("ABCDEFXYZ"))

運行結果

falsetruetruetrue

containsMatchIn

輸入的字符串中至少有一個匹配就返回 true,否則就返回 false。

 val r5 = Regex("[0-9]+") println(r5.containsMatchIn("012abdc")) println(r5.containsMatchIn("JAVAI"))

運行結果

truefalse

matchEntire

對字符串全部做比較,都匹配正則表達式返回一個MatcherMatchResult對象,否則返回 null。

 val r6 = Regex("[0-9]+") println(r6.matchEntire("1234567890")) println(r6.matchEntire("1234567890!")) println(r6.matchEntire("1234567890")?.value)

當我們使用 MatcherMatchResult 的 value 值來顯示匹配結果,由于 matchEntire 函數有可能返回一個 null,所以這里使用了安全調用符號“?”。

運行結果

kotlin.text.MatcherMatchResult@1fb3ebebnull1234567890

replace

replace(input: CharSequence, replacement: String): String

輸入的字符串匹配的部分替換成 replacement 的內容。

 val r7 = Regex("[0-9]+") println(r7.replace("12345XYZ33", "abcd"))

這個例子是把數字替換成了 abcd。

replace函數

函數簽名 replace(input: CharSequence, transform: (MatchResult)->CharSequence): String

它的功能是把輸入的字符串中匹配的值,用函數 transform 映射之后的新值進行替換。

 val r8 = Regex("[0-9]+") println(r8.replace("12XYZ9", {(it.value.toInt() * it.value.toInt()).toString()}))

我們可以看到,輸入的字符串中有兩個數字,一個是 12 在字符串的前部,一個是 9 在字符串的后部。

運行結果

144XYZ81

12 被替換成了 144,9 被替換成了 81。

find函數

返回字符串中第一個匹配的 MatcherMatchResult 對象

 val r9 = Regex("[0-9]+") println(r9.find("123ADPOIW87WEERUU005")) println(r9.find("123ADPOIW87WEERUU005")?.value)

這段代碼,會匹配123,而使用了 value 值的方式顯示出的結果,我們更加容易理解。

運行結果

kotlin.text.MatcherMatchResult@1fb3ebeb123

findAll

返回輸入的字符串中所有匹配的值的 MatchResult 序列。

我們可以通過 forEach 循環(huán)遍歷顯示所有匹配結果

 val src2 = "電話:010-12345678;傳真:010-10171695;備用:010-20141017" val re2 = """(/d{3}-/d{8})""" //"//d{3}-//d{8}" Regex(re2).findAll(src2).forEach { println(it.value + " 位置:[" + it.range + "]") }

運行結果

010-12345678 位置:[3..14]010-10171695 位置:[19..30]010-20141017 位置:[35..46]

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 爱逼爱操综合网 | 精品在线视频观看 | 国产精品一区2区3区 | 免费嗨片首页中文字幕 | 国产99久久久久久免费看 | 色婷婷av一区二区三区久久 | 看中国一级毛片 | 污片在线观看视频 | 欧美成人久久 | 国产大片中文字幕在线观看 | 久久久久久久99 | 日本中文字幕久久 | 国产91免费看 | 桥本有菜免费av一区二区三区 | 中文字幕 亚洲一区 | 国产91片 | 在线播放亚洲视频 | 成人在线观看小视频 | 久久久午夜电影 | 午夜视频亚洲 | 欧美日韩视频网站 | 把娇妻调教成暴露狂 | 成人一级毛片 | 亚洲国产精品高潮呻吟久久 | 成人免费午夜视频 | 久久99精品久久久久久青青日本 | 黄色毛片前黄 | 毛片在线免费视频 | 久久一级| 在线成人精品视频 | 国产成人在线一区二区 | 久久久久亚洲国产精品 | 久久久国产一级片 | 欧美日韩专区国产精品 | 久久精品性视频 | av电影院在线观看 | 麻豆传传媒久久久爱 | 免费男女视频 | 国产成人精品一区二区仙踪林 | 337p日本欧洲亚洲大胆精蜜臀 | 在线视频观看一区二区 |