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

以下の形式の出力が必要です。つまり、3 つのグループではなく、4 つのグループが必要です。

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)

出力:

re32
HKEY_LOCAL_MACHINE
ソフトウェア\XYZ\アシスタント\
アクティブ

ideone.com でご覧ください

この回答は本質的に Serge のものと同じですが、バックスラッシュはターゲット文字列とパターン文字列で適切にエスケープされており、最後のバックスラッシュは 3 番目のキャプチャ グループに含まれています。

しかし、最も重要なことは、このソリューションがテスト済みであることです。 イデオネFTW!

于 2011-03-05T03:33:31.750 に答える