正文

在文本_替换_正则 - 易语言助手中给出了文本_替换_正则的实现,这里我完善一下,额外增加了是否多行模式的参数。

.版本 2
.支持库 RegEx



.子程序 文本_替换_正则_多行模式, 文本型, 公开, 使用正则替换文本
.参数 原文本, 文本型
.参数 欲被替换的子文本1, 文本型
.参数 用作替换的子文本1, 文本型
.参数 欲被替换的子文本2, 文本型, 可空
.参数 用作替换的子文本2, 文本型, 可空
.参数 欲被替换的子文本3, 文本型, 可空
.参数 用作替换的子文本3, 文本型, 可空
.参数 欲被替换的子文本4, 文本型, 可空
.参数 用作替换的子文本4, 文本型, 可空
.参数 欲被替换的子文本5, 文本型, 可空
.参数 用作替换的子文本5, 文本型, 可空
.局部变量 局_文本, 文本型

局_文本 = 子文本正则替换 (原文本, 欲被替换的子文本1, 用作替换的子文本1, 真, 真)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本2, 用作替换的子文本2, 真, 真)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本3, 用作替换的子文本3, 真, 真)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本4, 用作替换的子文本4, 真, 真)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本5, 用作替换的子文本5, 真, 真)
返回 (局_文本)

.子程序 文本_替换_正则, 文本型, 公开, 使用正则替换文本
.参数 原文本, 文本型
.参数 欲被替换的子文本1, 文本型
.参数 用作替换的子文本1, 文本型
.参数 欲被替换的子文本2, 文本型, 可空
.参数 用作替换的子文本2, 文本型, 可空
.参数 欲被替换的子文本3, 文本型, 可空
.参数 用作替换的子文本3, 文本型, 可空
.参数 欲被替换的子文本4, 文本型, 可空
.参数 用作替换的子文本4, 文本型, 可空
.参数 欲被替换的子文本5, 文本型, 可空
.参数 用作替换的子文本5, 文本型, 可空
.局部变量 局_文本, 文本型

局_文本 = 子文本正则替换 (原文本, 欲被替换的子文本1, 用作替换的子文本1, 真, 假)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本2, 用作替换的子文本2, 真, 假)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本3, 用作替换的子文本3, 真, 假)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本4, 用作替换的子文本4, 真, 假)
局_文本 = 子文本正则替换 (局_文本, 欲被替换的子文本5, 用作替换的子文本5, 真, 假)
返回 (局_文本)

.子程序 子文本正则替换, 文本型, 公开
.参数 原文本, 文本型
.参数 要替换的文本, 文本型, 可空
.参数 用作替换的文本, 文本型, 可空
.参数 是否全部替换, 逻辑型, 可空
.参数 是否多行模式, 逻辑型
.局部变量 表达式, 正则表达式

.如果真 (要替换的文本 = “”)
    返回 (原文本)
.如果真结束
表达式.多行模式 = 是否多行模式
表达式.创建 (要替换的文本, )
返回 (表达式.替换 (原文本, 用作替换的文本, 1, , 真, 是否全部替换))

扩展

多行模式的作用如下:

源文本:

301	Adelyn	Sam
302	Jocelyn	Cohen
303	Wrenley	Kamari
304	London	Javier
305	Mya	Zayne

正则代码如下,该代码可以匹配301 302 等文本:

^[\d]+[\s]*

如果是单行模式下,则只能匹配到301 第一行文本,只有在多行模式下才能实现想要的效果。