Kotlin 正则表达式详解

源内容(英文)

正则表达式 (Regex) 是用于搜索、匹配和操作文本的强大工具。几乎每种现代编程语言都在使用它们,Kotlin 也不例外。在 Kotlin 中,Regex 类为处理正则表达式提供了内置支持。

Regex 类的对象代表一种模式,我们可以用它来检查字符串中是否存在特定的文本,提取该文本,或者将其替换。

正则表达式的优势

正则表达式具有多种优势和使用场景,例如:

  • 在字符串中搜索特定的模式(如所有数字、电子邮件或电话号码),
  • 替换或删除字符串的特定部分,
  • 基于模式拆分字符串(如按空格或标点符号拆分),
  • 从较长的字符串中提取特定文本。

从简单的数据清理到复杂的输入验证(如检查电子邮件地址是否有效),正则表达式无处不在。

创建正则表达式

在 Kotlin 中,我们可以通过以下方式构建正则表达式:

val pattern = Regex("pen")           // 使用 Regex 构造函数
val pattern2 = "pen".toRegex()       // 将字符串转换为 Regex
val pattern3 = Regex.fromLiteral("pen") // 按字面意思解释字符串,忽略特殊字符

所谓模式,是一组规则(由字符和元字符组成),描述了我们想要搜索或匹配的文本类型。

常用正则表达式模式

模式

概念

示例 —

— ^

将字符串的第一个字符与给定字符进行匹配

^x $

将字符串的最后一个字符与给定字符进行匹配

x$ .

此模式匹配任意单个字符。

ab. \ 这被称为交替(alternation)/ OR 运算符。它组合了两个或多个模式。

^x \

a$ ?

匹配前一个字符最多出现一次。

ab? +

匹配前一个字符至少出现一次。

abc+

匹配前一个字符出现零次或多次。

xyz
[pqr]

匹配集合中存在的任意单个字符。

[pqr] [i-p]

匹配范围内的任意单个字符。

[i-p] [^fsd]

这表示否定。它匹配除指定字符之外的任何字符。

[^fsd] \s

这是匹配空白字符的字符类。

\\s+ (匹配一个或多个空白字符) \w

这是匹配任何构成单词的字符的字符类。

\\w

> 注意: 首先我们必须创建一个模式,然后我们可以使用其中一个函数将该模式应用于文本字符串。这些函数包括 INLINECODE5ea4ccde、INLINECODE3a622014、INLINECODE5db7838f 和 INLINECODE1d0161f9。

应用正则表达式模式

创建模式后,我们可以使用以下函数将其应用于文本字符串:

  • find():查找字符串中的第一个匹配项。
  • findAll():查找字符串中的所有匹配项。
  • replace():替换字符串中匹配的部分。
  • split():使用该模式拆分字符串。

Kotlin 中的 find() 方法

它从指定的起始索引开始,返回输入中正则表达式的第一个匹配项。在 Kotlin 中,默认的起始索引为 0。

示例:

Kotlin


CODEBLOCK_b6754ca5

输出:

science found at indexes: 13..19

Kotlin 中的 findAll() 方法

它返回一个序列,包含给定输入字符串中所有出现的正则表达式。

示例:

Kotlin


CODEBLOCK_cfb5be4d

输出:

Geeks found at indexes: 0..4
Geeks found at indexes: 8..12

点(.)元字符

点 (.) 元字符表示文本中的任意单个字符。

示例:

Kotlin


CODEBLOCK_cede71ab

输出:

GeeksforGeeks matches the pattern
McGeek matches the pattern
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49700.html
点赞
0.00 平均评分 (0% 分数) - 0