我再次需要Lua模式的帮助。假设我有以下字符串:
<c> block
- 应与c
和block
<category>material
- 应与category
和material
decorative
- 如果没有<>
块,那么它应该返回它给出的内容(或零)。
我对空间不感兴趣,所以内置装饰会很好。
我设法创建了(<%a>)([^>]+)
,但在第一个示例中它返回了<c>
和block
,遗憾的是不是我之后的事情。
答案 0 :(得分:5)
模式中的(<%a>)
部分捕获尖括号,因此它们落在捕获的值中。 %a
只匹配一个字母字符,因此您需要在其后添加+
量词以匹配1个或多个字母字符。
使用
<(%a+)>%s*([^>]+)
%s*
将匹配0 +空白字符,它们将在第2组之外。
A 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