源内容(英文)
正则表达式 (Regex) 是用于搜索、匹配和操作文本的强大工具。几乎每种现代编程语言都在使用它们,Kotlin 也不例外。在 Kotlin 中,Regex 类为处理正则表达式提供了内置支持。
Regex 类的对象代表一种模式,我们可以用它来检查字符串中是否存在特定的文本,提取该文本,或者将其替换。
正则表达式的优势
正则表达式具有多种优势和使用场景,例如:
- 在字符串中搜索特定的模式(如所有数字、电子邮件或电话号码),
- 替换或删除字符串的特定部分,
- 基于模式拆分字符串(如按空格或标点符号拆分),
- 从较长的字符串中提取特定文本。
从简单的数据清理到复杂的输入验证(如检查电子邮件地址是否有效),正则表达式无处不在。
创建正则表达式
在 Kotlin 中,我们可以通过以下方式构建正则表达式:
val pattern = Regex("pen") // 使用 Regex 构造函数
val pattern2 = "pen".toRegex() // 将字符串转换为 Regex
val pattern3 = Regex.fromLiteral("pen") // 按字面意思解释字符串,忽略特殊字符
所谓模式,是一组规则(由字符和元字符组成),描述了我们想要搜索或匹配的文本类型。
常用正则表达式模式
概念
—
将字符串的第一个字符与给定字符进行匹配
将字符串的最后一个字符与给定字符进行匹配
此模式匹配任意单个字符。
^x \
匹配前一个字符最多出现一次。
匹配前一个字符至少出现一次。
匹配前一个字符出现零次或多次。
匹配集合中存在的任意单个字符。
匹配范围内的任意单个字符。
这表示否定。它匹配除指定字符之外的任何字符。
这是匹配空白字符的字符类。
这是匹配任何构成单词的字符的字符类。
> 注意: 首先我们必须创建一个模式,然后我们可以使用其中一个函数将该模式应用于文本字符串。这些函数包括 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