正则表达式匹配一行的2个不同部分

时间:2009-09-15 11:50:45

标签: regex string lua

我在lua工作,我需要匹配通过文件IO获取的2行部分。我对正则表达式没有经验,我被告知lua没有内置完整的正则表达式支持(但我有一个库,提供了如果需要的话)。有人可以帮我构建正则表达式以匹配必要的部分吗?

    "bor_adaptor_00.odf" 3.778
         ^^^^^^^^^^^^^^      ^^^^^
         i need this in      and this in
         a string            a number

2 个答案:

答案 0 :(得分:3)

我做了一个例子:

s = '"bor_adaptor_00.odf" 3.778'
val1, val2 = string.match(s,'(%b"")%s*([.0-9]*)')
print(val1, val2)

输出:

"bor_adaptor_00.odf"    3.778

答案 1 :(得分:2)

^"(.*?)"\s+(\d[\d.]*)$

说明:

  • ^ = line start
  • “(。*?)”=将“和”之间的所有内容保存到捕获组
  • \ s + =任何数字> = 1个空白字符
  • (\ d [\ d。] *)=一个数字后跟更多数字或点
  • $ =行尾

不知道如何在lua中使用它,但应该有助于让你开始。

另一方面,这是一个非常简单的字符串,所以在没有正则表达式的情况下解析它可能是一个好主意。