Kotlin String 正则表达式,快速测试正则表达式

1. Kotlin String 正则表达式的使用

目标:将字符串中的 XXX 替换为 <font color=#0000ff>XXX</font>

1.1 预备知识 : capturing group

需要用到正则表达式中「捕获组」(capturing group)的概念。下面的例子中 ()中的内容是要捕获的内容,也是后面要重复用的内容。例如,在 Java 中用 $1 表示捕获的第 1 组。同理 $2 匹配第 2 组。
关于 capturing group,请参考 Oracle 官方帮助文档

1.2 String 的正则表达式用法

Java 中的做法是:

text = text.replaceAll("(XXX)", "<font color=#0000ff>$1</font>");

Kotlin 中的写法为:(需要加 「.toRegex()」)

text = text.replace("(XXX)".toRegex(), "<font color=#0000ff>$1</font>")

2. 快速测试正则表达式

2.1 Android Studio 中,调试模式

适用于在 Android Studio 中做开发的小伙伴。

打开调试模式。
(断点)运行到 text 所在的代码。
右键鼠标,选择「Evaluate Expression」(快捷键 Alt + F8)
在弹出的「Evaluate」对话框中,可以在「Expression」输入框内,调试正则表达式的效果。这样可以反复测试,找到准确的正则表达式。而不用一遍遍的去编译、运行、看效果。

2.2 Python 环境

Python 环境 测试正则表达式,也是不错的。

$ python3
>>> import re
>>> re.match(pattern, string)
>>> re.search(pattern, string)
>>> re.findall(pattern, string)
以下是使用正则表达式校验URL格式的Kotlin示例代码: ```kotlin fun isValidUrl(url: String): Boolean { val regex = Regex( """^https?:// # http:// 或 https:// 开头 (?:(?:[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)| # 域名部分 localhost| # 或者是本地地址 \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) # 或者是IP地址 (?::\d+)? # 端口号(可选) (?:/?|[/?]\S+)$""", RegexOption.IGNORE_CASE or RegexOption.COMMENTS ) return regex.matches(url) } // 测试示例 println(isValidUrl("http://www.example.com")) // true println(isValidUrl("https://example.com/path/to/page.html")) // true println(isValidUrl("ftp://example.com/path/to/file.txt")) // false println(isValidUrl("http://localhost:8080")) // true println(isValidUrl("http://127.0.0.1")) // true ``` 该函数使用了一个较为复杂的正则表达式,可以较为准确地校验URL的格式。其中,该正则表达式包含以下几个部分: 1. `^https?://`:以 `http://` 或 `https://` 开头。 2. `(?:...|...)`:表示两个或多个可选的匹配项。 3. `[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.`:匹配域名中的一级和多级子域名,例如 `www.`、`blog.` 等。 4. `(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)`:匹配顶级域名,例如 `.com`、`.co.uk` 等。 5. `localhost`:匹配本地地址。 6. `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`:匹配IP地址。 7. `(?::\d+)?`:匹配可选的端口号。 8. `(?:/?|[/?]\S+)$`:匹配可选的路径和查询参数。 如果URL符合以上规则,则返回 `true`,否则返回 `false`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值