正则表达式匹配行的两个不同部分。

我正在使用 lua,需要通过文件 IO 匹配一行中的两个部分。我对正则表达式不熟悉,据说 lua 没有完全内置的正则表达式支持(但如果需要,我有一个库可以提供支持)。有人可以帮我构建正则表达式来匹配必要的部分吗?

    "bor_adaptor_00.odf" 3.778
         ^^^^^^^^^^^^^^      ^^^^^
         我需要这个部分     和这个数字
         作为一个字符串     作为一个数字

原文链接 https://stackoverflow.com/questions/1426685

点赞
stackoverflow用户55650
stackoverflow用户55650
^"(.*?)"\s+(\d[\d.]*)$

解释:

  • ^ = 行首
  • "(.*?)" = 将 " 和 " 之间的所有内容保存到一个捕获组中
  • \s+ = 任意个 >= 1 的空白字符
  • (\d[\d.]*) = 一个数字后面跟随更多的数字或点号
  • $ = 行尾

我不知道如何在 lua 中使用它,但应该能帮助你入门。

另一方面,这是一个非常简单的字符串,因此解析它时不使用正则表达式可能是一个很好的主意。

2009-09-15 11:55:50
stackoverflow用户108130
stackoverflow用户108130

我举了一个例子:

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
2009-09-15 12:19:49