regex - Lua文本解析、空格处理

标签 regex parsing text lua

我是 Lua 的新手。我想像这样解析文本

Phase1:A B Phase2:A B Phase3:W O R D Phase4:WORD

Phase1         Phase2      Phase3     Phase4

A              A B         W O R D    WORD

我用了string.gmatch(s, "(%w+):(%w+)"),只能得到

Phase1     Phase2     Phase3       Phase4

A          A          W            WORD

我怎样才能找回丢失的 B、O、R、D?
还是我需要为每个阶段编写模式?如何做到这一点?

最佳答案

您示例中的输入文本在短语之间没有任何明确的分隔符,因此使用正则表达式准确解析它很棘手。

如果您添加像 , 这样的分隔符来分隔短语,这将更容易解析。

Phrase1:A B, Phrase2:A B, Phrase3:W O R D,Phrase4:WORD

然后您可以使用此模式解析它:

s = "Phrase1:A B, Phrase2:A B, Phrase3:W O R D,Phrase4:WORD"

for k, v in s:gmatch "(Phrase%d+):([^,]+)" do
    print(k, v)
end

输出:

Phrase1 A B
Phrase2 A B
Phrase3 W O R D
Phrase4 WORD

如果无法放宽上述约束,可以试试这个模式:

  s:gmatch "Phrase%d+:%w[%w ]* "

请注意,此模式有一个警告,您正在解析的字符串末尾需要有一个额外的空格,否则最后一个短语将不会被解析。

关于regex - Lua文本解析、空格处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118917/

相关文章:

java - 如何使用 Java 中的正则表达式删除字符串中的反斜杠?

javascript - 正则表达式 JS : Searching between two same words

performance - Data.Text.Lazy.Builder 与 Text.Builder

C#,在 Windows 上检测选定的文本?

regex - htaccess 将所有图像重定向到不同的位置并将图像名称放入新的 url

python - 如何使用lark ebnf解析字符串内的~{expr}

json - 使用 Unix 工具解析 JSON

c# - 如何解析 set-cookie header 中的名称-值对?

在 android sax 解析 : XML or text declaration not at start of entity 之后,php xml 响应给了我这个

android - 如何在 Android 的纯文本文件中执行查询?