再帰的な正規表現
[id:lethevert:20051204:p4]
[id:lethevert:20051208:p1]
これが通らない。
q = pre.compile(r"(?P<pn>(?:\(\))|(?:\((?P=pn)\)))") text = q.sub('aa', text)
こんなエラーが出る。
Traceback (most recent call last): File "./ts.py", line 34, in ? text = q.sub('aa', text) File "/usr/lib/python2.3/pre.py", line 350, in sub return self.subn(repl, string, count)[0] File "/usr/lib/python2.3/pre.py", line 386, in subn regs = match(source, pos, end, 0) pcre.error: ('Regex execution error', -2)
-
-
- -
-
これは通るが、
q = pre.compile(r"(\(\))(\1)")
これは通らない。
q = pre.compile(r"(\(\1\))")
エラーは同じ。
-
-
- -
-
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NAMED_CAPTURE
ここでは、再帰的な正規表現が可能なように書いてあるけど・・・
pythonのpcreは古いらしいから、それが原因か? PHPには新しいpcreが使われているらしいので、そちらを試してみる方がいいかもしれない。
-
-
- -
-
cygwinでphpを利用するのは、そんなに手軽ではない感じ。
pcre単体で使えないかな?
-
-
- -
-
これが、ちょっと参考になるかも。
http://namazu.org/~satoru/blog/archives/000076.html