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`。

相关推荐
移幻漂流3 小时前
Lua的现状与机遇:技术生态全景及高潜力领域分析
junit·单元测试·lua
我发在否3 小时前
OpenResty > Lua断点调试
vscode·lua·断点·openresty·luapanda
大雨淅淅1 天前
【开发工具】Postman从入门到精通:环境搭建与使用全攻略
开发语言·lua
爱学习的潇潇1 天前
Postman学习之常用断言
自动化测试·软件测试·功能测试·学习·程序人生·lua·postman
程序员雷叔1 天前
在postman设置请求里带动态token,看看这两种方法!
selenium·测试工具·单元测试·测试用例·pytest·lua·postman
AI软件工程实践1 天前
软件工程里 Postman 的文件上传与下载测试技巧
测试工具·ai·lua·postman
IMPYLH1 天前
Lua 的 Table 模块
开发语言·笔记·后端·junit·游戏引擎·lua
科技块儿1 天前
如何编程调用IP查询API?(PythonJava等示例)
网络协议·tcp/ip·lua
AI_56782 天前
Postman接口测试极速入门指南
开发语言·人工智能·学习·测试工具·lua
IMPYLH2 天前
Lua 的 String(字符串) 模块
开发语言·笔记·单元测试·lua