我有一个监控CPU和GPU温度的外部应用程序......
我正在使用Lua和外来扩展来获取这些值(通过GetWindowText)并对这些值进行一些模式匹配,有效地从字符串中提取温度数字,默认情况下显示为CPU 67.875 °C......
但也许我对于LUA中的模式如何工作有错误的想法(因为它们看起来不像正则表达式)?
我使用的模式[%d]+[.%d+]*应该匹配0到100.0之间的任何数字,对吗?
奇怪的是,当值达到56.5度左右时,我得到了令人难以置信的奇怪输出(见链接).
为什么会这样?
如何以0到100之间的格式提取正确的浮点值(作为字符串)XYY.ZZZ,其中X不是可选的,Y是可选的,.除非Z存在,否则是可选的?
我有以下形式的字符串:
cake!apple!
apple!
cake!juice!apple!cake!
juice!cake!
Run Code Online (Sandbox Code Playgroud)
换句话说,这些字符串由三个子串"cake!","apple!"和"juice!".
我需要验证这些字符串.因此,使用正则表达式执行此操作的方法是:
/^(apple!|juice!|cake!)*$/
Run Code Online (Sandbox Code Playgroud)
但是Lua的模式没有|运算符,所以它似乎无法以这种方式完成.
如何在Lua中验证我的字符串?
(我不关心字符串的内容:我只关心它们是否符合(验证).)
我知道编写代码来做到这一点,但我想不出一个简短的方法来做到这一点.我正在寻找一个简短的解决方案.我想知道是否有一个我不知道的优雅解决方案.有任何想法吗?
我使用MSN weatherservice.现在我有以下问题string.match.所有变量都被填充,除了sWindRichtung.它等于nil.
sHumidity, rest = string.match(rest,"humidity=\"([^\"]+)\"(.*)");
sWind, rest = string.match(rest,"windspeed=\"([^\"]+)\"(.*)");
sWindRichtung, rest = string.match(rest,"winddisplay=\"([^\"]+)\"(.*)");
Run Code Online (Sandbox Code Playgroud)
要过滤的字符串是: humidity="77" winddisplay="11 km/uur N" windspeed="11"
我认为角色/是问题所在.
What I want to do is really simple. I want use Lua to check lines in a Plist file.
Let's say if a line in Plist, is <integer>-1.00</integer>, I need to cut the .00 off to make it be <integer>-1</integer>.
I use a function to read the whole file content and do line by line check and replace.
local function doLineClean( cont )
newcont = ''
string.gsub( cont, "(.-)\r?\n", function(line) …Run Code Online (Sandbox Code Playgroud) 我试图在Lua中实现一个模式,但没有成功
我需要的模式就像正则表达式: [a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}
这是验证guid.
我无法找到在Lua中找到工具正则表达式的正确方法,也无法在文档中找到.
请帮我实现guid以上的正则表达式.
众所周知,以递归方式(而不是NFA/DFA)实现的正则表达式在某些情况下可能需要指数运行时间.Lua模式是通过递归匹配器实现的(它们允许回溯),但它们的功能不如正则表达式(忘记%b模式).
Lua模式是否需要指数运行时间?并且没有回溯(任何出现的%0,%1,%2 ...模式)?如果是这样,我会欣赏一些例子.
我有以下代码:
if not (email:match("[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+")) then
print(false)
end
Run Code Online (Sandbox Code Playgroud)
目前没有捕获
"test@yahoo,ca" or "test@test1.test2,com"
Run Code Online (Sandbox Code Playgroud)
作为错误。
我认为通过将输入限制为%a- 字符和%d- 数字,我会默认捕获任何标点符号,包括逗号。
但我想我错了。或者还有其他我没有看到的东西。第二双眼睛将不胜感激。
不确定如何检查单词是否作为字符串中的整个单词出现,而不是单词的一部分,区分大小写.例如:
Play 是字符串
Info Playlist Play pause
Run Code Online (Sandbox Code Playgroud)
但不在字符串中
Info Playlist pause
Info NowPlay pause
Run Code Online (Sandbox Code Playgroud) 我是Lua的新手,很难理解模式匹配.我试图弄清楚如何在冒号后匹配字符串中的所有内容,并将该部分字符串放入变量中.我在网上四处看看并没有太多运气,或者我只是没有看到它.那我该怎么做呢?
例如,假设我有一个名为my_string等于"hello:hi_there"或类似的变量.如何"hi_there"在不改变的情况下提取到另一个变量my_string?
看起来我需要使用string.match(),但是用什么模式来实现我的目标?