Kotlin语言编程Regex正则表达式实例详解
作者:子不语Any 发布时间:2023-06-22 02:06:29
标签:Kotlin,Regex,正则表达式
前言
回想一下,在学Java时接触的正则表达式,其实Kotlin中也是类似。只不过使用Kotlin 的语法来表达,更为简洁。正则(Regex)用于搜索字符串或替换正则表达式对象,需要使用Regex(pattern:String)类。 在Kotlin中 Regex 是在 kotlin.text.regex 包。
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开始 |
fun matchEntire(input: CharSequence): MatchResult? | 用于匹配模式中的完整输入字符 |
fun matches(input: CharSequence): Boolean | 输入字符序列是否与正则表达式匹配 |
fun replace(input: CharSequence, replacement: String): String | 用给定的替换字符串替换正则表达式的所有输入字符序列 |
示例展示
这里通过调用几个常见正则函数进行几组数据查找,展示常用正则表达式用法:
1.containsMatchIn(input: CharSequence) 包含指定字符串
使用场景:判定是否包含某个字符串
val regex = Regex(pattern = "Kot")
val matched = regex.containsMatchIn(input = "Kotlin")
运行结果:
matched = true
2.matches(input: CharSequence) 匹配字符串
使用场景:匹配目标字符串
val regex = """a([bc]+)d?""".toRegex()
val matched1 = regex.matches(input = "xabcdy")
val matched2 = regex.matches(input = "abcd")
运行结果:
matched1 = false
matched2 = true
3.find(input: CharSequence, startIndex: Int = 0) 查找字符串,并返回第一次出现
使用场景:返回首次出现指定字符串
val phoneNumber :String? = Regex(pattern = """\d{3}-\d{3}-\d{4}""")
.find("phone: 123-456-7890, e..")?.value
结果打印:
123-456-7890
4.findAll(input: CharSequence, startIndex: Int = 0) 查找字符串,返回所有出现的次数
使用场景:返回所有情况出现目标字符串
val foundResults = Regex("""\d+""").findAll("ab12cd34ef 56gh7 8i")
val result = StringBuilder()
for (text in foundResults) {
result.append(text.value + " ")
}
运行结果:
12 34 56 7 8
5.replace(input: CharSequence, replacement: String) 替换字符串
使用场景:将指定某个字符串替换成目标字符串
val replaceWith = Regex("beautiful")
val resultString = replaceWith.replace("this picture is beautiful","awesome")
运行结果:
this picture is awesome
来源:https://juejin.cn/post/7137118892769411086


猜你喜欢
- 上一篇Flutter页面路由及404路由拦截实现介绍了使用路由来实现页面的跳转,从而简化页面之间的耦合,并可以实现路由拦截。在实际开发中,我
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- 一、获取android工程里面的各种资源的id; 1.1 string型 比如下面: << string name=”OK”&g
- 大致分为以下几个方面:一些查询指令整理使用SQL语句进行特殊查询检测表字段是否存在数据库升级数据库表字段赋初始值一、查询指令整理1.链式执行
- jdk8之前 一、java.lang.Systemlong times = System.currentTimeMillis();
- 正则表达式是一种描述词素的重要表示方法。虽然正则表达式并不能表达出所有可能的模式(例如“由等数量的 a 和 b 组成的字符串”),但是它可以
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- 走马灯是一种常见的效果,本文讲一下如何用 PageView 在 Flutter 里实现一个走马灯, 效果如下,当前页面的高度比其它页面高,切
- 1 自定义类加载器自定义类加载器的代码很简单,只需要继承ClassLoader类,覆写findClass方法即可其默认实现是会抛出一个异常:
- 前言最近看插件库上少有的取色器大都是圆形的或者奇奇怪的的亚子,所以今天做两个矩形的颜色取色器提示:以下是本篇文章正文内容,下面案例可供参考一
- 前言在使用Java开发接口请求中,我们需要对请求进行进行统一返回值,这时候我们自己封装一个统一的Result返回类,下面就介绍下我用的这种的
- 本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。1.拷贝代码仓库从
- 最近要给一个 Winform 项目添加功能,需要一个能显示进度条的弹窗,还要求能够中止任务,所以就做了一个,在此做个记录总结。虽然用的是比较
- 首先打开 Visual Studio Installer 可以看到vs2022 只支持安装4.6及以上的版本,如图所示。那么该如何安装4.6
- [LeetCode] 2. Add Two Numbers 两个数字相加You are given two non-empty&n
- 最近研究了一下如何在Android上实现CoverFlow效果的控件,其实早在2010年,就有Neil Davies开发并开源出了这个控件,
- 本文实例讲述了Android+SQLite数据库实现的生词记事本功能。分享给大家供大家参考,具体如下:主activity命名为Dict:代码
- Json的简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个
- 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,
- 1: .net framework 由两个部分组成:CLR 和 FCL。2:在CLR中,所有错误都是通过异常来报告的。3:智能感知功能主要是