Lua 如何知道字符串是否包含带有特殊符号的子字符串?

Lua 如何知道字符串是否包含带有特殊符号的子字符串?,lua,lua-patterns,Lua,Lua Patterns,为什么要使用此代码: p="PS02 - Fretted stereo2stereo (x86)"  s="PS02 - "  if string.match(p,s) then  reaper.ShowConsoleMsg("Yes!") end 给了我们“是的!” 但是这个代码: p="PS02 - Fretted stereo2stereo (x86)"  s="PS02 - F"  if string.match(p,s) then  reaper.ShowConsoleMsg

为什么要使用此代码:

p="PS02 - Fretted stereo2stereo (x86)" 
s="PS02 - " 
if string.match(p,s) then 
  reaper.ShowConsoleMsg("Yes!")
end
给了我们“是的!”

但是这个代码:

p="PS02 - Fretted stereo2stereo (x86)" 
s="PS02 - F" 
if string.match(p,s) then 
  reaper.ShowConsoleMsg("Yes!")
end
什么都没有给我们

如何知道某个字符串是否包含另一个字符串(带有空格或其他符号,如“-”或“()”?

“PS02-”
似乎有效,因为它实际上只匹配子字符串
“PS02”
。这是因为
(空格)
中的
-
表示“匹配(空格)零次或多次,但次数尽可能少。”


魔法字符
^$()%.[]*+-?
必须以前导的
%
作为前缀(转义)。。。因此,在上述每种情况下,正确的模式是
“PS02%-”
“PS02%-F”

替换
string.match(p,s)
string.match(p,(s:gsub(%p)”,“%%%0”)
或替换
if string.match(p,s),然后将
替换为
if string.find(p,s,1,true)然后
对于我们这些来自其他语言(这里是perl)的人来说,这将是一个棘手的问题。Lua模式不是我们成长过程中使用的正则表达式。