Lua 使用正则表达式分隔字符串

Lua 使用正则表达式分隔字符串,lua,pattern-matching,lua-patterns,Lua,Pattern Matching,Lua Patterns,上述代码输出: _, _, XYZ, Path, filename = string.find("re32:HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ\\Assistant\\Active ", "(%w+):(.+)\\(.*)") print(XYZ) print(Path) print(filename) 我需要以下形式的输出——也就是说,我需要四个组,而不是三个组: re32 HKEY_LOCAL_MACHINE\SOFTWARE\XYZ\

上述代码输出:

 _, _, XYZ, Path, filename  = string.find("re32:HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ\\Assistant\\Active ", "(%w+):(.+)\\(.*)")

print(XYZ)  
print(Path)    
print(filename)
我需要以下形式的输出——也就是说,我需要四个组,而不是三个组:

 re32
 HKEY_LOCAL_MACHINE\SOFTWARE\XYZ\Assistant\
 Active
在这种情况下必须做什么

re32
HKEY_LOCAL_MACHINE
SOFTWARE\XYZ\Assistant\
Active
应该产生

_, _, XYZ, RootKey, Path, filename = string.find("re32:HKEY_LOCAL_MACHINE\SOFTWARE\XYZ\Assistant\Active ", "(%w+):(.-)\(.+)\(.*)")

print(XYZ)
print(RootKey)
print(Path)
print(filename)
应该产生

_, _, XYZ, RootKey, Path, filename = string.find("re32:HKEY_LOCAL_MACHINE\SOFTWARE\XYZ\Assistant\Active ", "(%w+):(.-)\(.+)\(.*)")

print(XYZ)
print(RootKey)
print(Path)
print(filename)

可以在正则表达式中包含命名组。 示例:-(/group1\[0-9])(abc) (在上述示例中,将“/”替换为“”) 此regx将匹配“3abc”,您可以通过在匹配中选择组名(group1)来获得匹配的号码。
参照此

可以在正则表达式中包含命名组。 示例:-(/group1\[0-9])(abc) (在上述示例中,将“/”替换为“”) 此regx将匹配“3abc”,您可以通过在匹配中选择组名(group1)来获得匹配的号码。 参考这个

输出:re32 HKEY_本地_机器 软件\XYZ\Assistant\ 活跃的

这个答案与Serge的答案基本相同,但反斜杠在目标和图案字符串中正确转义,最后一个反斜杠包含在第三个捕获组中

但最重要的是,这个解决方案已经过测试。FTW

输出:re32 HKEY_本地_机器 软件\XYZ\Assistant\ 活跃的

这个答案与Serge的答案基本相同,但反斜杠在目标和图案字符串中正确转义,最后一个反斜杠包含在第三个捕获组中

但最重要的是,这个解决方案已经过测试。FTW

使用[[]]而不是“”来停止转义序列


使用[[]]而不是“”来停止转义序列。

\uuuuuuuxyz,test,Path,filename=string.find(“re32:HKEY\u LOCAL\u MACHINE\\SOFTWARE\\XYZ\\Assistant\\Active”、“(%w+):(.+)\(.+)\(.+)\(.*)”打印(XYZ打印(测试)打印(路径)打印(文件名)@Chet,您还需要为您创建的其他组添加另一个变量请验证第二个和第三个组必须使用您的建议反转设置输出:re32 HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ Assistant Active预期为:re32 HKEY_LOCAL_MACHINE SOFTWARE\\XYZ\\Assistant Active使用您的建议获取输出:re32HKEY\U LOCAL\U MACHINE\\SOFTWARE\\XYZ Assistant Active预期为:re32 HKEY\U LOCAL\U MACHINE\\XYZ\\XYZ Assistant Active\U,XYZ,test,Path,filename=string.find(“re32:HKEY\U LOCAL\U MACHINE\\SOFTWARE\\XYZ\\ASSISTANDART\\Active”,“(%w+:(.+)\(.+)\(.+)\(.XYZ)打印(测试)打印(路径)打印(文件名)@Chet,您还需要为您创建的其他组添加另一个变量请验证第二个和第三个组必须使用您的建议反转设置输出:re32 HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ Assistant Active预期为:re32 HKEY_LOCAL_MACHINE SOFTWARE\\XYZ\\Assistant Active使用您的建议获取输出:re32HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ Assistant Active预期激活:re32 HKEY_LOCAL_MACHINE SOFTWARE\\XYZ\\Assistant ActiveRegex in LUA我需要你在谈论C#请帮助LUA Regex in LUA我需要你在谈论C#请帮助LUA Regex
_, _, XYZ, RootKey, Path, filename = string.find(
    "re32:HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ\\Assistant\\Active ",
    "(%w+):(.-)\\(.+\\)(.*)")

print(XYZ)
print(RootKey)
print(Path)
print(filename)
re32 HKEY_LOCAL_MACHINE SOFTWARE\XYZ\Assistant\ Active
XYZ, RootKey, Path, filename = ([[re32:HKEY_LOCAL_MACHINE\SOFT WARE\XYZ\Assistant\Active ]]):match ( [[(%w+):([^\]+)(.+)\(.*)]])