06/05/11 06:48:26
おはようございます。
昨夜は頭が回らなかったのか、初めの \0 の代入は不要でしたね。
[Patterns]
Name = "$NEST emulator [not inner match] test2"
Active = TRUE
Limit = 256
Match = "<a\s[^>]+>$SET(N=1)([^<]+(<(^a\s[^>]+>)[^>]+>[^<]+)+<a\s[^>]+>$SET(N=$GET(N)1))+(*</a>$TST(N=1\0)$SET(N=\0))+"
Replace = "\r\nN = $GET(N) / \\0 = \0 / test"
>563
私も>564氏の仰るとおりだと思ったのですが、実際にテストしてみると予想とは少し違った結果となりました。
1. <a href=1><a href=2><a href=3></a></a></a>
→ N =
2. <a href=1><a href=2><a href=3></a></a>
→ N = 1 / \0 =
3. <a href=1><a href=2><a href=3></a>
→ N = 11 / \0 = 1
1. 2. までは NULL が代入された変数でReplaceが止まっているので予想と符合します。
が、3. はどちらの変数にも NULL が入っていないにも関わらず、Replaceが止まります。