我应该使用哪个字符串库来解析括号内的特定数据?

我从一个日志文件中解析一系列字符串,

但其中某些格式不同,例如。

...
[01. sample1][YES][1]
[02. sample1][2]
[03. sample1][NO][3]
...

我想解析字符串

...
01. sample1 YES
02. sample1
03. sample1 NO
...

真的不知道如何实现。 请给我一些想法!谢谢

点赞
用户2328287
用户2328287
`function log_decode(str)`
定义一个函数`log_decode`,参数为`str`

`local a,b,c = str:match("^%[(.-)%]%[(.-)%]%[(.-)%]$")`
使用正则表达式对`str`进行匹配,三个圆括号分别代表匹配到的字符串`a`、`b`、`c`。`^%[(.-)%]%[(.-)%]%[(.-)%]%$`的意思是匹配以`[`开头、以`]`结束,中间的字符包括`.`和`-`的字符串,共三个。

`if a then return a, b, c end`
如果匹配到了三个字符串,就返回这三个字符串

`return str:match("^%[(.-)%]%[(.-)%]$")`
如果未匹配到三个字符串,则用正则表达式`^%[(.-)%]%[(.-)%]$`匹配两个字符串。`^%[(.-)%]%[(.-)%]%$`的意思是匹配以`[`开头、以`]`结束,中间的字符包括`.`和`-`的字符串,共两个。

`print(log_decode"[01. sample1][YES][1]")`
打印出调用`log_decode`函数,参数为`[01. sample1][YES][1]`的返回值

`print(log_decode"[02. sample1][2]")`
打印出调用`log_decode`函数,参数为`[02. sample1][2]`的返回值

`print(log_decode"[03. sample1][NO][3]")`
打印出调用`log_decode`函数,参数为`[03. sample1][NO][3]`的返回值
2014-08-12 08:09:40