1
 _, _, 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

在这种情况下必须做什么?

4

4 回答 4

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

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

于 2011-03-07T07:47:22.380 回答
0

您可以在正则表达式中命名组。示例:- (/group1\[0-9])(abc) (在上面的示例中将“/”替换为“<”,将“\”替换为“>”)此正则表达式将匹配“3abc”,您可以获得匹配的通过在比赛中选择组名(group1)来编号。参考这个http://www.regular-expressions.info/named.html

于 2011-03-05T02:57:59.830 回答
0
_, _, 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
于 2011-03-05T00:35:55.387 回答
0
_, _, XYZ, RootKey, Path, filename = string.find(
    "re32:HKEY_LOCAL_MACHINE\\SOFTWARE\\XYZ\\Assistant\\Active ",
    "(%w+):(.-)\\(.+\\)(.*)")

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

输出:

重新32
HKEY_LOCAL_MACHINE
软件\XYZ\助手\
积极的

在 ideone.com 上查看

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

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

于 2011-03-05T03:33:31.750 回答