- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一些关于 Lua 的帮助。我需要一些代码来匹配这一行:
efs.test efs.test.gpg
这是我目前拥有的与“efs.test”匹配的内容:
if string.match(a.message, "%a+%a+%a+.%%a+%a+%a+%a+") then
print(a.message)
else
print ("Does not match")
end
我也试过这个,它匹配:
if string.match(a.message, "efs.test") then
print(a.message)
else
print ("Does not match")
end
但是当我尝试添加额外的文本时,我的编译器在运行此代码时出现“预期的数字,得到了字符串”错误:
if string.match(a.message, "efs.test", "efs") then
print(a.message)
else
print ("Does not match")
end
任何指针都会很棒!
谢谢。
最佳答案
if string.match(a.message, "%a+%a+%a+.%%a+%a+%a+%a+") then
首先,这是对量词 的错误使用。来自 PiL 20.2 :
+ 1 or more repetitions
* 0 or more repetitions
- also 0 or more repetitions
? optional (0 or 1 occurrence)
换句话说,在你已经用 unlimited %a+ 匹配了完整的单词之后,你尝试匹配 unlimited %a+
匹配efs.test efs.test.gpg
- 我想我们有 2 个文件名,严格意义上的文件名可能只包含 %w
- 字母数字字符 (A-Za-z0-9)。这将正确匹配 efs.test
:
string.match(message, "%w+%.%w+")
更进一步,匹配efs.test
作为文件名和以下文件名:
string.match(message, "%w+%.%w+ %w+%.%w+%.gpg")
虽然这会匹配两个文件名,但您需要检查匹配的文件名是否相同。我们可以更进一步:
local file, gpgfile = string.match(message, "(%w+%.%w+) (%1%.gpg)")
此模式将返回任何 <filename> <filename>.gpg
文件名相等的地方。
使用捕获组,我们捕获文件名:它将作为第一个变量返回并进一步表示为 %1。然后在空格字符之后,我们尝试匹配 %1
(捕获的文件名)后跟 .gpg
.由于它也包含在方括号中,因此它将成为第二个捕获组并作为第二个变量返回。完成!
PS:您可能希望通过不区分大小写的 [Gg][Pp][Gg] 模式获取“.gpg”。
PPS:文件名可以包含空格、破折号、UTF-8 字符等。例如ext4只禁止 \0
和 /
字符。
关于string - 用 Lua 匹配整个、精确的文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331390/
我是一名优秀的程序员,十分优秀!