Lua正则表达式(模式匹配规则)-提取颜色/

主要用到string.match

Lua 复制代码
function _ExtractColorAndText(codeString)
    -- 定义一个模式来匹配颜色代码
    local pattern = "<color=(#?%x+)>(.-)</color>"
    local success, colorCode, text = pcall(string.match, codeString, pattern)
    if success and colorCode and text then
        log(colorCode,text)
        return colorCode, text
    else
        log("not find color code??",codeString)
        return nil, codeString -- 如果没有找到颜色代码,返回nil
    end
end

local str = "<color=#FF1414>联盟#敌方占领据点1</color>"
local color, text = _ExtractColorAndText(str)

print(color, text)

在Lua中,你提供的字符串 `local pattern = "<color=(#?%x+)>(.-)</color>"` 是一个用于匹配富文本中颜色标签的模式字符串,它遵循Lua的模式匹配规则,而不是正则表达式规则。这个模式用于搜索形如 `<color=#RRGGBB>文字</color>` 的文本,其中 `#RRGGBB` 是颜色代码。

让我们分解一下这个模式:

Lua 复制代码
1. <color=:匹配文本中的 <color= 字符串。
2. (#?%x+):这是一个捕获组,匹配一个可选的 # 符号(#?),后面跟着一个或多个十六进制数字(%x+)。%x 在Lua模式匹配中表示一个十六进制数字(0-9, a-f, A-F)。
3. >:匹配关闭尖括号 >。
4. (.-):这是另一个捕获组,匹配任意字符(.),尽可能少的匹配次数(-),直到遇到下一个模式。
5. </color>:匹配结束的颜色标签 </color>。

要使用这个模式,你可以使用Lua的 `string.gmatch` 或 `string.match` 函数。这里是一个使用 `string.gmatch` 的例子,它会迭代所有匹配的颜色标签:

Lua 复制代码
local text = "This is a <color=#FF0000>red</color> word and this is a <color=0000FF>blue</color> word."
local pattern = "<color=(#?%x+)>(.-)</color>"

for color, word in text:gmatch(pattern) do
    print("Color: " .. color .. ", Word: " .. word)
end

这段代码会打印出所有匹配的颜色值和对应的文本。注意,Lua的模式匹配不支持像正则表达式那样的复杂模式,所以它不如正则表达式那样强大和灵活。如果你需要更复杂的文本处理,可能需要使用支持正则表达式的库,比如Lua的 `lrexlib`。

相关推荐
韩仔搭建9 小时前
美乐迪电玩大厅加载机制与 RoomList 配置结构分析
游戏·小程序·开源·lua
老狼孩111221 天前
2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发
android·机器人·自动化·lua·脚本开发·懒人精灵·免root开发
珠峰下的沙砾2 天前
如何在 Postman 中,自动获取 Token 并将其赋值到环境变量
测试工具·lua·postman
时光话2 天前
Lua 第9部分 闭包
开发语言·lua
时光话2 天前
Lua 第7部分 输入输出
开发语言·lua
Hy行者勇哥4 天前
使用Postman调测“获取IAM用户Token”接口实际操作
测试工具·lua·postman
加油,旭杏6 天前
【Lua语言】Lua语言快速入门
开发语言·lua
徐同保6 天前
fetch使用put请求提交文件,postman使用put请求提交文件
测试工具·lua·postman
码到成功>_<9 天前
postman使用技巧
测试工具·lua·postman
King.62410 天前
SQL2API 核心理念:如何重构数据服务交付范式
大数据·开发语言·数据库·人工智能·sql·lua