Lua模式文本分割
问题描述:
我再次需要Lua模式的帮助。可以说我有以下字符串:Lua模式文本分割
<c> block
- 应匹配c
和block
<category>material
- 应匹配category
和material
decorative
- 如果没有<>
块,那么它应该回到它被赋予了什么(或零)。
我对空间不感兴趣,所以建在修剪将是很好的。
我设法创建了(<%a>)([^>]+)
,但它在第一个示例中返回<c>
和block
,很可惜这不是我所追求的。
答
模式中的(<%a>)
部分捕获尖括号,因此它们落在捕获的值中。 %a
仅匹配一个字母字符,因此您需要在其后添加+
量词以匹配1个或更多字母字符。
使用
<(%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
尝试'%S *([^ >] +)' –