标签: lua-patterns

Lua模式中的交替运算符是什么?

在正则表达式中,|用于交替.Lua模式中的相应字符是什么?

lua lua-patterns

8
推荐指数
1
解决办法
2644
查看次数

使用Lua从URL获取文件名

如何使用Lua字符串操作从URL获取文件名.

我有这个网址

https://thisisarandomsite.com/some_dir/src/blah/blah/7fd34a0945b036685bbd6cc2583a5c30.jpg

我想得到7fd34a0945b036685bbd6cc2583a5c30.jpg它,它可以是一个随机网站,所以网站名称不是静态的.

string lua coronasdk lua-patterns

8
推荐指数
1
解决办法
3688
查看次数

如何使用模式匹配查找重复的字符串?

我有一个与此类似的字符串:

[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> |Hunit:Player-3693-07420299:DevnullYour [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature. 
Run Code Online (Sandbox Code Playgroud)

如果你想知道,它来自魔兽世界.

我想结束这样的事情:

[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> Your [Chimaera Shot] hit Dungeoneer's Training Dummy 33265 Nature. 
Run Code Online (Sandbox Code Playgroud)

如果你注意到,"Dungeoneer's Training Dummy"会被打印两次.我设法用这样的东西摆脱了第一个"| Hunit"部分:

str = "[13:41:25] [100:Devnull]: 01:41:20, 13:41:21> |Hunit:Player-3693-07420299:DevnullYour [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature."
str = string.gsub(str, "|Hunit:.*:.*Your", "Your")
Run Code Online (Sandbox Code Playgroud)

哪个返回:

print(str)    # => [13:41:25] [100:Devnull]: 01:41:20, 13:41:21> Your [Chimaera Shot] hit |Hunit:Creature-0-3693-1116-3-87318-0000881AC4:Dungeoneer's Training DummyDungeoneer's Training Dummy 33265 Nature.
Run Code Online (Sandbox Code Playgroud)

然后我添加第二个gsub:

str = string.gsub(str, …
Run Code Online (Sandbox Code Playgroud)

lua world-of-warcraft lua-patterns

8
推荐指数
1
解决办法
112
查看次数

在Lua中使用string.gmatch()拆分字符串

这里有一些讨论和实用函数,用于分割字符串,但是我需要一个特殊的单行程来完成一个非常简单的任务.

我有以下字符串:

local s = "one;two;;four"
Run Code Online (Sandbox Code Playgroud)

我想分开它";".我想最终得到{ "one", "two", "", "four" }回报.

所以我试着这样做:

local s = "one;two;;four"

local words = {}
for w in s:gmatch("([^;]*)") do table.insert(words, w) end
Run Code Online (Sandbox Code Playgroud)

但结果(words表)是{ "one", "", "two", "", "", "four", "" }.那肯定不是我想要的.

现在,正如我所说,这里有一些关于分裂字符串的讨论,但它们中有"冗长"的功能,我需要一些简洁的东西.我需要这个代码用于一个程序,在那里我展示了Lua的优点,如果我添加一个冗长的函数来做一些如此微不足道的事情,它将违背我.

string lua lua-patterns

7
推荐指数
1
解决办法
3万
查看次数

如何在括号中捕获字符串?

str = "fa, (captured)[asd] asf, 31"

for word in str:gmatch("\(%a+\)") do
    print(word) 
end
Run Code Online (Sandbox Code Playgroud)

嗨!我想在括号中捕捉一个单词.

我的代码应该打印"捕获"字符串.

lua: /home/casey/Desktop/test.lua:3: invalid escape sequence near '\('
Run Code Online (Sandbox Code Playgroud)

我得到了这个语法错误.

当然,我可以找到括号的位置并使用string.sub函数

但我更喜欢简单的代码.

另外,括号给了我类似的错误.

string lua string-matching lua-patterns

7
推荐指数
2
解决办法
4354
查看次数

在Lua中修改字符串中的字符

有没有办法替换Lua中字符串中位置N处的字符.

这是我到目前为止所提出的:

function replace_char(pos, str, r)
    return str:sub(pos, pos - 1) .. r .. str:sub(pos + 1, str:len())
end

str = replace_char(2, "aaaaaa", "X")
print(str)
Run Code Online (Sandbox Code Playgroud)

我不能使用gsub,因为它会取代每个捕获,而不仅仅是位置N的捕获.

string lua gsub lua-patterns

6
推荐指数
2
解决办法
1万
查看次数

从字符串中删除'$'字符

我试图从字符串中删除'$'符号,但我猜它是一些特殊的字符?我对lua非常陌生(今天刚刚开始编写).从我的理解,这应该工作,并为其他字符做string.gsub(line,'$','').

regex string lua lua-patterns

6
推荐指数
1
解决办法
3907
查看次数

如何在Lua字符串中替换$?

如何在Lua中替换一个美元符号,因为它是模式匹配中的特殊字符?

我试过这个:

string.gsub("$44,000.00", "$", "")
> "$44,000.00"
Run Code Online (Sandbox Code Playgroud)

但它只是在字符串的末尾添加一个空白.例如

string.gsub("$44,000.00", "$", "what")
> "$44,000.00what"
Run Code Online (Sandbox Code Playgroud)

string lua lua-patterns

6
推荐指数
1
解决办法
3155
查看次数

Lua:除非引用,否则将字符串拆分为单词

所以我有以下代码在空格之间拆分字符串:

text = "I am 'the text'"
for string in text:gmatch("%S+") do
    print(string)
end
Run Code Online (Sandbox Code Playgroud)

结果:

I
am
'the
text'
Run Code Online (Sandbox Code Playgroud)

但我需要这样做:

I
am
the text --[[yep, without the quotes]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

编辑:只是为了补充问题,我们的想法是将参数从程序传递到另一个程序.这是我正在工作的拉取请求,目前正在审核中:https://github.com/mpv-player/mpv/pull/1619

string lua lua-patterns

6
推荐指数
1
解决办法
1343
查看次数

使用string.match处理语音标记

我有一个xml页面,我有一个监控系统扫描,这里是源数据:

`<queues>
<queue name="workQueue">
<stats size="0" consumerCount="28" enqueueCount="29320" dequeueCount="37000"/>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的代码:

local pattern = " size=(%d+) "

local a = alarm.get("CO13974960-19518")

local vsize = string.match(a.message, pattern)

local sum = vsize
Run Code Online (Sandbox Code Playgroud)

我正在尝试从XML页面中定位这一部分数据:

stats size="0"
Run Code Online (Sandbox Code Playgroud)

值"0"是我感兴趣的数字,我正在寻找一种方法来通过脚本捕获该数字(无论它到达什么).

我想我的脚本正在寻找:

size=0 而不是 size="0"

但我不确定如何执行此操作的正确语法.

string lua lua-patterns

6
推荐指数
1
解决办法
116
查看次数