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

相关推荐
FFZero12 天前
[mpv脚本系统] (四) 脚本加载与事件循环系统
c语言·音视频·lua·多媒体
多彩电脑3 天前
Lua中的元表里的__index和__newindex
开发语言·lua
zfoo-framework3 天前
通过redis-cli+lua脚本查询redis数据
数据库·redis·lua
kiss strong3 天前
自制请求工具
开发语言·python·lua
闪电悠米3 天前
黑马点评-秒杀优化-04_lua_and_db_fallback
服务器·开发语言·网络·数据库·缓存·junit·lua
闪电悠米3 天前
黑马点评-秒杀优化-03_blocking_queue_async_order
数据库·分布式·oracle·junit·wpf·lua
闪电悠米4 天前
黑马点评-秒杀优化-02_lua_precheck
开发语言·redis·分布式·缓存·junit·wpf·lua
程序员二叉4 天前
【Redis】 高性能核心:IO多路复用+多线程+Pipeline+Lua脚本(面试终极版)
redis·面试·lua
智能制造产品经理代码提升4 天前
快速搭建PayPal标准API测试框架
开发语言·lua
智能制造产品经理代码提升4 天前
Postman批量CaptureID全自动查询
开发语言·lua