_, _, 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
在这种情况下需要做些什么?
答案 0 :(得分:1)
XYZ, RootKey, Path, filename = ([[re32:HKEY_LOCAL_MACHINE\SOFT WARE\XYZ\Assistant\Active ]]):match ( [[(%w+):([^\]+)(.+)\(.*)]])
使用[[]]代替“”来停止转义序列。
答案 1 :(得分: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
答案 2 :(得分:0)
您可以在正则表达式中使用命名组。 示例: - (/ group1 \ [0-9])(abc) (在上面的示例中将“/”替换为“<”,将“\”替换为“>”) 此regx将匹配“3abc”,您可以通过在匹配中选择组名称(group1)来获取匹配的号码。 请求http://www.regular-expressions.info/named.html
答案 3 :(得分: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
<强> See it on ideone.com 强>
这个答案与Serge的答案基本相同,但反斜杠在目标和模式字符串中被正确转义,最后的反斜杠包含在第三个捕获组中。
但最重要的是,此解决方案已经测试。 Ideone FTW!