亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

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

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

前言

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

其實只是對正則不了解而以,了解了你就會發現,原來就這樣啊~~正則所用的相關字符其實不多,也不難記,更不難懂,唯一難的就是組合起來之后,可讀性比較差,而且不容易理解,最近在學習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 循環遍歷顯示所有匹配結果

 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费97视频在线精品国自产拍| 日韩三级影视基地| 国产成人精品亚洲精品| 亚洲男人天堂2023| 欧美激情欧美激情在线五月| 色偷偷av一区二区三区| 久久久久久尹人网香蕉| 高清欧美性猛交xxxx黑人猛交| 亚洲毛片在线观看.| 欧洲美女7788成人免费视频| 亚洲午夜色婷婷在线| 亚洲人成电影网站色www| 欧美日韩精品在线| 久久久成人精品| 欧美黑人xxxⅹ高潮交| 欧美精品久久久久久久| 日韩国产激情在线| 成人福利在线视频| 日韩一级黄色av| 精品国产老师黑色丝袜高跟鞋| 91精品久久久久久久久久久久久| 欧美激情女人20p| 国产日韩专区在线| 欧美精品日韩三级| 日韩在线视频导航| 欧美在线激情视频| 97视频人免费观看| 一本大道久久加勒比香蕉| 大桥未久av一区二区三区| 夜夜躁日日躁狠狠久久88av| 国产小视频91| 日本久久亚洲电影| 成人妇女淫片aaaa视频| 欧美另类极品videosbest最新版本| 一本色道久久88亚洲综合88| 国产日韩换脸av一区在线观看| 亚洲2020天天堂在线观看| 欧美在线一级视频| 亚洲图片欧美午夜| 亚洲图片制服诱惑| 亚洲精品美女久久| 久久久久久亚洲精品中文字幕| 欧美日韩国产丝袜另类| 欧美一级大胆视频| 蜜臀久久99精品久久久无需会员| 日韩精品视频中文在线观看| 国产精品国产亚洲伊人久久| 久久国产精品99国产精| 日本午夜在线亚洲.国产| 国模gogo一区二区大胆私拍| 亚洲精品视频在线播放| 亚洲国产成人精品女人久久久| 亚洲国产精品专区久久| 国产精品久久久亚洲| 97欧美精品一区二区三区| 人人澡人人澡人人看欧美| 亚洲精品小视频| 国产精品精品国产| 97免费中文视频在线观看| 日韩欧美主播在线| 亚洲一区二区三区四区视频| 综合国产在线观看| 国产欧美精品一区二区三区-老狼| 伊人伊成久久人综合网小说| 性亚洲最疯狂xxxx高清| 久久精品国产一区二区电影| 欧美一区二区.| 日本国产一区二区三区| 国产精品三级美女白浆呻吟| 日韩大片免费观看视频播放| 久久国产精品久久久久久久久久| 久久综合色88| 亚洲欧洲偷拍精品| 中文字幕视频在线免费欧美日韩综合在线看| 欧美精品成人91久久久久久久| 亚洲精品mp4| 疯狂做受xxxx欧美肥白少妇| 欧美日韩精品二区| 亚洲bt欧美bt日本bt| 日本三级久久久| 欧美精品久久久久久久久久| 91免费在线视频| 国产精品最新在线观看| 亚洲香蕉av在线一区二区三区| 欧美性猛交xxxx偷拍洗澡| 91在线观看免费网站| 日韩av免费观影| 97在线视频免费看| 国外视频精品毛片| 日韩高清不卡av| 亚洲福利视频久久| 欧美日韩亚洲精品一区二区三区| 中文字幕不卡在线视频极品| 色诱女教师一区二区三区| 日韩精品亚洲视频| 正在播放欧美视频| 国产一区二区美女视频| 久久亚洲精品毛片| 国产日韩精品在线播放| 欧美日本国产在线| 欧美国产高跟鞋裸体秀xxxhd| 国产精品一区二区3区| 亚洲www在线| 国产不卡av在线免费观看| 亚洲视屏在线播放| 国内揄拍国内精品| 久久国产精品视频| 亚洲欧洲在线视频| 国产99久久精品一区二区永久免费| 日韩欧美中文免费| 国产97在线观看| 久久精品欧美视频| 成人免费在线网址| 热99精品里视频精品| 欧美性生交大片免费| 欧美午夜久久久| 欧美日韩亚洲一区二| 国产精品精品一区二区三区午夜版| 国产精品久久色| 亚洲美女在线观看| 亚洲第一视频网| 欧美高清videos高潮hd| 色综合男人天堂| 久久精品国产91精品亚洲| 国产主播喷水一区二区| 欧美黑人xxxⅹ高潮交| 日韩a**站在线观看| 青草青草久热精品视频在线网站| 亚洲欧美日本伦理| 欧美日韩国产在线播放| 成人免费在线视频网站| 亚洲欧美国产精品va在线观看| 日韩小视频在线| 在线一区二区日韩| 奇米4444一区二区三区| 国产成人综合精品| 成人精品一区二区三区| 国产一区二中文字幕在线看| 狠狠爱在线视频一区| 欧美最近摘花xxxx摘花| 日本久久久久亚洲中字幕| 色噜噜国产精品视频一区二区| 欧美在线一级va免费观看| 国产69久久精品成人| 国产日产欧美a一级在线| 亚洲男人天堂视频| 中文字幕一区日韩电影| 国模叶桐国产精品一区| 亚洲国产日韩欧美在线图片| 成人精品一区二区三区电影免费| 日韩av色在线| 国外成人性视频| 国产精品美女视频网站| 日本午夜精品理论片a级appf发布| 亚洲自拍偷拍第一页| 国产一区二区三区久久精品| 美日韩丰满少妇在线观看| 91久久国产综合久久91精品网站| 亚洲精品91美女久久久久久久| 综合网日日天干夜夜久久| 色婷婷综合久久久久中文字幕1| 亚洲美女视频网| 国产一区二区日韩| 午夜精品国产精品大乳美女|