【问题标题】:Lua pattern text splitLua 模式文本拆分
【发布时间】:2017-09-23 20:01:50
【问题描述】:

我再次需要有关 Lua 模式的帮助。假设我有以下字符串:

<c> block - 应该匹配 cblock

<category>material - 应该匹配 categorymaterial

decorative - 如果没有 <> 块,那么它应该返回给定的内容(或 nil)。

我对空间不感兴趣,所以内置修剪会很好。

我设法创建了(<%a>)([^>]+),但它在第一个示例中返回<c>block,遗憾的是这不是我想要的。

【问题讨论】:

  • 试试<(%a+)>%s*([^>]+)

标签: lua


【解决方案1】:

模式中的(<%a>) 部分捕获尖括号,因此它们位于捕获的值中。 %a 仅匹配一个 alpha 字符,因此您需要在其后添加 + 量词以匹配 1 个或多个 alpha 字符。

使用

<(%a+)>%s*([^>]+)

%s* 将匹配 0+ 个空白字符,它们将在第 2 组之外。

Lua demo:

local function splitString(text)
    return string.match(text, "<(%a+)>%s*([^>]+)")
end

print(splitString("<c> block"))           -- c  block
print(splitString("<category>material"))  -- category   material
print(splitString("decorative"))          -- nil

【讨论】:

  • 这里的人真是天才。谢谢。
  • 只是不要在函数内部使用全局变量 :)
  • @moteus 好的,现在是单线:)
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 2018-05-29
相关资源
最近更新 更多