Lua |字符串模式|在字符串中查找字符串的模式

问题描述 投票:0回答:1

我正在制作一个游戏内脚本编辑器,并且几乎完成了。除了需要编写按键绑定等脚本外,我还需要修复Syntax Highlighter的一些问题。到目前为止,这是编辑器的外观:(UI尚未对其进行任何处理,请忽略它。)

Picture of editor in game

您可以清楚地看到,有一些错误需要解决,例如某些括号拒绝突出显示。不过,更大的问题在于我的发现字符串模式:(([^\\]*["\']).*%2)此模式导致以下情况:Items between two strings become highlighted几周前,我在从事此工作上稍作休息,而且我对模式的工作方式也不太记得。我尝试修改现有模式以防止字符串之间的文本包含在匹配项中,但是它要么选择“全部”,要么找不到任何字符串。我需要确保它也没有找到\'或\“作为字符串的指示符。

string lua
1个回答
0
投票

您的模式有点复杂。您可以使用模式"

简单匹配%b""的平衡对
local myString = 'local a = {"one", "two", "tree"}'

for str in myString:gmatch('%b""') do print(str) end

打印

"one"
"two"
"tree"

请参见https://www.lua.org/manual/5.3/manual.html#6.4.1

%bxy,其中x和y是两个不同的字符;这样的项目匹配以x开头,以y结尾以及x和y在哪里的字符串均衡。这意味着,如果人们从左到右读取字符串,对x计数+1,对y计数-1,结尾y是第一个y计数达到0。例如,项目%b()与表达式匹配括号括起来。

© www.soinside.com 2019 - 2024. All rights reserved.